Доступ к различным типам узлов дерева DOM

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


import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;



import org.w3c.dom.*;



/**

 * This sample program shows how to browse through DOM-tree,

 * determine the types of DOM-nodes and printing their 

 * specific contents.

 */



public class Test {

  public static void main(String[] args) {

    try {

      // first of all we request out 

      // DOM-implementation:

      DocumentBuilderFactory factory = 

        DocumentBuilderFactory.newInstance();

      // then we have to create document-loader:

      DocumentBuilder loader = factory.newDocumentBuilder();



      // loading a document...

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

      

      // access to root element:

      Element purchaseOrder = document.getDocumentElement();

      

      // print a document element content:

      printElement(purchaseOrder, "");

            

    catch (Exception ex) {

      ex.printStackTrace();

    }

  }

  

  public static final void printElement(Element element, String indent) {

    System.out.println("Element '" + element.getNodeName() "'");

    

    NodeList children = element.getChildNodes();

    for (int i = 0; i < children.getLength(); i++) {

      Node child = children.item(i);

      

      switch (child.getNodeType()) {

      case Node.ELEMENT_NODE:

        // recursive call for all element children:

        printElement((Elementchild, indent + "\t");

        break;

      case Node.ATTRIBUTE_NODE:

        Attr attr = (Attrchild;

        System.out.println("\tAttribute: '" 

          attr.getName() "' = '" + attr.getValue() "'");

        break;

      case Node.COMMENT_NODE:

        Comment comment = (Commentchild;

        System.out.println("\tComment: '" + comment.getData() "'");

        break;

      case Node.CDATA_SECTION_NODE:

        CharacterData cdata = (CharacterDatachild;

        System.out.println("\tCDatat: '" + cdata.getData() "'");

        break;

      case Node.TEXT_NODE:

        Text text = (Textchild;

        System.out.println("\tText: '" + text.getData() "'");

        break;

      // ... all cases remaining ...

      default:

        System.out.println("\tUnknown node type: '" 

          + child.getNodeType() "'");

        break;

      }

    }

  }

}

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

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

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