2017-03-29 58 views
9

Pobierany jest plik XML oparty na XSD, który wymaga obecności elementu kontenera XML, nawet jeśli jest pusty.Nie można serializować pustych tablic do pustego elementu XML za pomocą serializera JMS

Kiedy próbuję serializować pustą tablicę, używając serializatora JMS, z konfiguracją, która działa, jeśli tablica nie jest pusta, nie otrzymuję żadnego elementu.

Czy mogę rozwiązać ten problem przez konfigurację lub czy będę musiał wdrożyć własną procedurę obsługi zdarzeń?

Z góry dziękuję.

+0

Jak startowych/nazywamy serializer? – Sebastian

Odpowiedz

2

zrobiłem kilka kopanie i okazało się, że nie ma nieudokumentowane opcje, które mogą być określone na xml_list, o nazwie skip_when_empty.

Wsparcie dla wyżej wymienionego obiektu została również zaimplementowana w xsd2php z następującym PR, który został włączony do pana kilka dni temu: https://github.com/goetas-webservices/xsd2php/pull/27

0

Spróbuj tego:

$serializer = JMS\SerializerBuilder::create(); 
$context = JMS\SerializationContext::create()->setSerializeNull(true);   
$serializedString = $serializer->serialize($data, 'xml', $context); 

tutaj setSerializeNull(true) zmusi właściciela/właściwości do serializacji nawet jeśli jest zerowa