Простая проблема разбора списка XML - PullRequest
0 голосов
/ 05 августа 2011

У меня есть этот xml:

<root>
<fruitlist>
    <apple>4</apple>
    <apple>5</apple>
    <orange>2</orange>
    <orange>6</orange>
</fruitlist>
</root>

Я пишу класс синтаксического анализатора, хотя я не могу понять, как обращаться с несколькими типами узлов.Я могу легко проанализировать список, который содержит только один тип узла (например, только яблоки, а не апельсины)

@ElementList(name = "fruitlist")
private List<Apple> exercises;

с более чем одним типом узла, который он также хочет, так что анализируйте не Apple-узлы, которые не работают.Я также попытался создать еще один список для апельсинов, но он не работает, я не могу использовать имя фруктового списка более одного раза.

@ElementList(name = "fruitlist", entry = "orange")
private List<Orange> exercises;

Идеальным вариантом было бы два отдельных списка для обоих типов узлов.

Хуби

РЕДАКТИРОВАТЬ: После дополнительного поиска и уточнения этот вопрос является дубликатом:

Наследование с простой XML Framework

Ответы [ 2 ]

1 голос
/ 24 января 2013

Попробуйте, это будет работать.

@ElementListUnion({
   @ElementList(entry="apple", type=Apple.class),
   @ElementList(entry="orange", type=Orange.class)
})
private List<Fruit> fruitlist;
0 голосов
/ 05 августа 2011

Идеальной структурой данных для решения этой проблемы синтаксического анализа, вероятно, будет HashTable с именем элемента в качестве ключа (String) и списком его возможных дочерних элементов в качестве содержимого (List

Hashtable<String, Integer> numbers = new Hashtable<String, List<String>>();

В любом случае, если вы хотите проанализировать XML-файл, существует множество возможных фреймворков, которые вы можете использовать в Java.

...