Mega Code Archive

 
Categories / Java Tutorial / XML
 

Accessing different types of DOM tree nodes

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Attr; import org.w3c.dom.CharacterData; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; public class Main {   public static void main(String[] argv) throws Exception {     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();     DocumentBuilder loader = factory.newDocumentBuilder();     Document document = loader.parse("sample.xml");     Element purchaseOrder = document.getDocumentElement();     printElement(purchaseOrder, "");   }   static 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:         printElement((Element) child, indent + "\t");         break;       case Node.ATTRIBUTE_NODE:         Attr attr = (Attr) child;         System.out.println("\tAttribute: '" + attr.getName() + "' = '" + attr.getValue() + "'");         break;       case Node.COMMENT_NODE:         Comment comment = (Comment) child;         System.out.println("\tComment: '" + comment.getData() + "'");         break;       case Node.CDATA_SECTION_NODE:         CharacterData cdata = (CharacterData) child;         System.out.println("\tCDatat: '" + cdata.getData() + "'");         break;       case Node.TEXT_NODE:         Text text = (Text) child;         System.out.println("\tText: '" + text.getData() + "'");         break;       default:         System.out.println("\tUnknown node type: '" + child.getNodeType() + "'");         break;       }     }   } }