Как пройти через DOM дерево в виде списка

Существует способ траверс DOM-дерево, как обычный линейный список. В этих целях DOM интерфейс предлагает NodeIterator интерфейса. Кроме того, прокатка, такой итератор Также можно отфильтровать узлы найти в дереве исходных текстов. Такой подход позволяет избежать многочисленных проверка текущего типа узла, а также использования метода рекурсивных вызовов для просмотра дерева. Следующая программа показывает, как пройти ДОМ-элементами только:


import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;



import org.w3c.dom.traversal.DocumentTraversal;

import org.w3c.dom.traversal.NodeFilter;

import org.w3c.dom.traversal.NodeIterator;



import org.w3c.dom.*;



/**

 * This sample program using node-iterator for

 * linear traverse of DOM-document.

 */



public class Test {



  public static void main(String[] args) {

  try {

    // load the document from a file:

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    DocumentBuilder loader = factory.newDocumentBuilder();

    Document document = loader.parse("sample.xml");

      

    // this cast is checked on Apache implementation (Xerces):

    DocumentTraversal traversal = (DocumentTraversaldocument;



    NodeIterator iterator = traversal.createNodeIterator(

      document.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);



    for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {

      System.out.println("Element: " ((Elementn).getTagName());

    }



  catch (Exception ex) {

    ex.printStackTrace();

  }

  }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>