Java Получить дочерние узлы с разными именами тегов в том порядке, в котором они появляются в документе XML - PullRequest
0 голосов
/ 15 марта 2012

У меня есть XML-файл, который выглядел примерно так ...

<RootElementTag>
   <ChildElementTag1 attribute1="value1" />
   <ChildElementTag1 attribute1="value2" />
   <ChildElementTag1 attribute1="value4" />
</RootElementTag>

Мне пришлось извлечь все узлы "ChildElementTag1" и обработать их в том порядке, в котором они появляются в файле.Я использовал org.w3c.dom.Document.getElementsByTagName("ChildElementTag1");, который вернул мне NodeList в том порядке, в котором он отображается в файле xml.

Теперь xml немного изменился, и в него включен новый дочерний узел с другим именем тега "ChildElementTag2".

<RootElementTag>
   <ChildElementTag1 attribute1="value1" />
   <ChildElementTag1 attribute1="value2" />
   <ChildElementTag2 attribute2="value3" />
   <ChildElementTag1 attribute1="value4" />
   <ChildElementTag2 attribute2="value5" />
</RootElementTag>

Есть ли способ получить все 5 узлов дочерних элементов в приведенном выше фрагменте XML в порядке их появления.

Примечание: - Я видел org.w3c.dom.Document.getElementById() методчто потребовало бы, чтобы я ввел атрибут «id» для каждого дочернего узла и упорядочил их на основании значения их атрибута «id».На данный момент я не использую этот подход, надеясь, что есть более простой способ сделать это.

1 Ответ

2 голосов
/ 15 марта 2012

Вызов getChildNodes() на узле RootTagElement.


В Javadoc для этого метода не упоминается, что NodeList возвращен в том порядке, в котором онпоявится в документе.

Я подозреваю, что вы обнаружите, что они в том же порядке, в каком они указаны в документе.OTOH, вы также можете посмотреть методы, перечисленные чуть ниже того, с которым я связался.В частности, getFirstChild() & getNextSibling() (который вы будете вызывать для первого ребенка, затем несколько раз до null).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...