SimpleXML, преобразовать дочерние элементы с динамическими именами в список

Я использую SimpleXML http://simple.sourceforge.net/home.php внутри своего Android приложение,

Я получаю данные из API следующим образом:

<Items>
   <data_0>
      <name> x1 </name>
      <phone> y1 </phone>
   </data_0>
   <data_1>
      <name> x2 </name>
      <phone> y2 </phone>
   </data_1>
   <data_2> ... </data_2>
      ...
   <data_n> ... </data_n>
</Items>

Как я могу написать класс POJO с помощью simpleXML, чтобы он принимал бесконечное количество элементов <data_n>?


person AndroidGecko    schedule 17.06.2014    source источник


Ответы (1)


Это ужасно разработанный XML-документ, и если вы имеете какое-либо влияние на формат, который вы получаете, я бы предложил запросить изменение:

<Items>
   <data id="0">
      <name> x1 </name>
      <phone> y1 </phone>
   </data>
   <data id="1">
      <name> x2 </name>
      <phone> y2 </phone>
   </data>
   <data id="2"> ... </data>
      ...
   <data id="n"> ... </data>
</Items>

Лично я бы даже не пытался разработать POJO для этого, а вместо этого просто очистил бы XML (даже просто заменив строковый шаблон в его строковом представлении) до формата, указанного выше (вы даже можете полностью избавиться от атрибута id как место в списке все равно это отразится), что впоследствии может быть определено как List объектов данных.

Если вы не можете гарантировать определенное максимальное количество элементов data (тогда копирование и вставка для десятков элементов с ужасными именами может помочь), я не думаю, что вы даже можете разработать для этого POJO, поскольку вы также не можете определить XML-схему для этого документа.

person Norbert Radyk    schedule 17.06.2014
comment
Спасибо Норберт! да непорядок :/ - person AndroidGecko; 17.06.2014