Java HTML / XML How to - Check node type








Question

We would like to know how to check node type.

Answer

import java.io.File;
/* w  w  w.  j a  v a 2  s  . c o  m*/
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
  public static void main(String[] args) throws Exception {
    DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()
        .newDocumentBuilder();
    Document doc = dBuilder.parse(new File("data.xml"));
    System.out.println("Root element :"
        + doc.getDocumentElement().getNodeName());
    if (doc.hasChildNodes()) {
      printNote(doc.getChildNodes(), 1);
    }
  }

  private static void printNote(NodeList nodeList, int depth) {
    for (int count = 0; count < nodeList.getLength(); count++) {
      Node tempNode = nodeList.item(count);
      if (tempNode.getNodeType() == Node.ELEMENT_NODE) {
        System.out.println(depth + "Node Name =" + tempNode.getNodeName());
        System.out.println(depth + "Node Value =" + tempNode.getTextContent());
        if (tempNode.hasAttributes()) {
          NamedNodeMap nodeMap = tempNode.getAttributes();
          for (int i = 0; i < nodeMap.getLength(); i++) {
            Node node = nodeMap.item(i);
            System.out.println("attr name : " + node.getNodeName());
            System.out.println("attr value : " + node.getNodeValue());
          }
        }
        if (tempNode.hasChildNodes()) {
          printNote(tempNode.getChildNodes(), depth + 1);
        }
        System.out.println(depth + "Node Name =" + tempNode.getNodeName());
      }
    }
  }
}