Как получить доступ к элементам в DOM?

#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 /…