#xml #dom #web
#xml #dom #веб
Вопрос:
Итак, у меня есть этот XML-файл:
<root>
<node>
<name>One</name>
<val>1</val>
</node>
<node>
<name>Two</name>
<val>2</val>
</node>
<node>
<name>Three</name>
<val>3</val>
</node>
</root>
Итак, насколько я понимаю, для доступа ко всем узлам мне нужно получить список узлов с помощью getElementsByName(«узел»);
Теперь, когда я получил этот список, как мне получить доступ ко всем дочерним элементам? Я не уверен, правильно ли я это делаю.
По сути, мне нужно перебрать все элементы узла, и для каждого из них мне нужно удалить имя и значение, потому что я использую их для вызова другой функции.
Ответ №1:
Если возможно, вы можете использовать API обхода DOM: http://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html
В Java это будет что-то вроде этого:
Document doc = ...;
NodeIterator i = ((DocumentTraversal) doc).createNodeIterator(doc,
NodeFilter.SHOW_ELEMENT, null, false);
Element e = null;
while ((e = (Element) i.nextNode()) != null) {
System.out.println(e.getTagName());
}
JavaScript должен иметь нечто подобное, если реализован API обхода.
Ответ №2:
Если x является объектом узла, вы можете использовать свойства x.childNodes, которые предоставят вам список всех дочерних элементов узла x. И затем вы можете получить доступ к y.nodeValue, где y — дочерний узел, чтобы получить значение узла.
Комментарии:
1. Итак, если я получу список узлов, используя x.childNodes, а затем в каждом из этих узлов будет два поля. Как мне получить доступ к полю 1 и полю 2 напрямую? Могу ли я использовать getElementByName?
2. x.childNodes предоставит вам список узлов, т.е. Список узлов nl1 = x.getChildNodes(); n11.item(0) даст вам имя, а nl1.item(1) даст вам значение этого узла.
3. Для этого вам следует обратиться к DOM API. download.oracle.com/javase/1.4.2/docs/api/org/w3c/dom /…