XML Processing by DOM parser

DOMTest.java
~~~~~~~~~~~~
package com.anil;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Text;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
 * Simple XML process use DOM Method, DOM document object model
 *
 */
public class DOMTest {
    public static void main(String[] args) {

        // DOM document object model
        try {
            /*
             * get documentBuilder and parse XML file
             */
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder documentBuilder = factory.newDocumentBuilder();
            Document document = documentBuilder.parse("anil.xml");

            /*
             * get first element in XML file, this were root element
             */
            Element element = document.getDocumentElement();
            String tagName = element.getTagName();
            System.out.println("root element: " + tagName);

            /*
             * add new element to XML and save it to new file
             */
            Element power = document.createElement("Power");
            element.appendChild(power);

            try {
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                transformer.transform(new DOMSource(document),new StreamResult("newAnil.xml"));
                System.out.println("Create new XML file success!");
                System.out.println("----------------------------");
            } catch (TransformerConfigurationException e1) {
                e1.printStackTrace();
            } catch (TransformerException e) {
                e.printStackTrace();
            }

            /*
             * search for special element item, and print item value
             */
            NodeList nodeList = element.getElementsByTagName("display");
            for (int i = 0; i < nodeList.getLength(); i++) {
                Element item = (Element) nodeList.item(i);
                String size = item.getAttribute("size");
                System.out.println("Display size: " + size);
                System.out.println("-----------------------------");
            }

            /*
             * get sub nodes of element
             */
            NodeList childNodes = element.getChildNodes();
            System.out.println("childNodes size: " + childNodes.getLength());

            /*
             * iterator sub element in XML file
             */
            for (int i = 0; i < childNodes.getLength(); i++) {
                Node item = childNodes.item(i);
                // System.out.println(item);

                /*
                 * access Text in XML file
                 */
                if (item instanceof Text) {
                    Text text = (Text) item;
                    String data = text.getData();
                    System.out.println("text: " + data);
                }

                /*
                 * access element in XML file
                 */
                if (item instanceof Element) {
                    Element e = (Element) item;
                    String tagName2 = e.getTagName();
                    System.out.println("sub tag name: " + tagName2);

                    /*
                     * get attributes of element
                     */
                    NamedNodeMap attributes = e.getAttributes();
                    for (int j = 0; j < attributes.getLength(); j++) {
                        Node item2 = attributes.item(j);
                        System.out.println("sub item: " + item2);
                    }
                }
            }

            System.out.println("----------End------------");

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

--------------------------------------------------------------------------------------------------------------
anil.xml
~~~~~~
<?xml version="1.0" encoding="utf-8"?>
<computer>
<display size="17">Samsung</display>
<box>
   <motherboard>
    <cpu>E8300</cpu>
    <ram type="DDR2">2G</ram>
    <displaycard>nVidia</displaycard>
   </motherboard>
   <harddisk>320G</harddisk>
   <dvdrom>16X</dvdrom>
</box>
</computer>

No comments:

Post a Comment