XStream избежать коллекции xml элемента - PullRequest
1 голос
/ 14 ноября 2009

Учитывая List POJO, если я сериализую их с XStream, я получаю:

<list>
  <pojo>
     <a>a</a>
     <b>b</b>
  </pojo>
  <pojo>
     <a>a</a>
     <b>b</b>
  </pojo>
</list>

Как я могу выполнить сериализацию и пропустить записи <list> </list>? Я использовал addImplicitCollection для аналогичной цели, но для этого нужно было пропустить переменную экземпляра коллекции name , когда коллекция была членом сериализуемого класса.

Примечание: Этот вопрос выглядит аналогичным, но не совсем уместным (я думаю).

Ответы [ 3 ]

4 голосов
/ 14 сентября 2011

В наши дни (используя XStream 1.4.1) можно исключить элемент контейнера из вывода, используя " неявные коллекции "

2 голосов
/ 14 ноября 2009

Вы не можете. Представьте, что узел <list> пропал - как XStream узнает, как десериализовать этот XML? Это может быть список / набор / массив / что-то еще целиком. Кроме того, представьте, что у вас есть объект, содержащий список ваших pojo, за которыми следует одно поле pojo - они будут перемешаны вместе.

Тем не менее, если вы не намерены десериализовать это, вы можете реализовать свой собственный потоковый драйвер и модуль записи, похожий на JSON writer , который отбросит <list> для вас.

1 голос
/ 24 февраля 2010

XML должен иметь один корневой элемент, поэтому ChssPly76 прав, но, конечно, если вы используете потоковую передачу XML, вы можете просто писать каждое pojo одно за другим (это также имеет смысл с точки зрения памяти).

Подробнее см. http://x -stream.github.io / objectstream.html .

...