XML belgesi aşağıdaki gibidir :
<?xml version="1.0" encoding="ISO-8859-9">
<test>
<person id="12">
<name>Ali</name>
<tel id="home">02129456789</tel>
</person>
<person id="asd">
<name>Veli</name>
<tel id="home">02124365</tel>
</person>
<person id="fasf">
<name>Yusuf</name>
<tel id="home">1212162840</tel>
</person>
</test>
DOM Parser kodu aşağıdaki gibidir :
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.w3c.dom.NodeList;
import java.io.*;
public class DOMTest {
public void print(String file) throws Exception {
Document doc = getDocument(file);
Element root = doc.getDocumentElement();
printNode(root);
}
public void printNode(Node node) {
System.out.println("name: " + node.getNodeName() + " value: " + node.getNodeValue());
printAttribute(node);
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
aNode = list.item(i);
printNode(aNode);
}
}
public void printAttribute(Node node){
NamedNodeMap map=node.getAttributes();
if(map!=null){
for(int i=0;iNode aNode=map.item(i);
String name=aNode.getNodeName();
String value=aNode.getNodeValue();
System.out.println("Attribute: "+name+" : "+value);
}
public DocumentBuilder getBuilder() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
return factory.newDocumentBuilder();
}
public Document getDocument(String file) throws Exception {
DocumentBuilder builder = getBuilder();
return builder.parse(new File(file));
}
static public void main(String[] args) {
try {
DOMTest test = new DOMTest();
test.print("test.xml");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Önce DocumentBuilder nesnesini yaratmamız gerekir. Ardından Document nesnesini oluşturmak için DocumentBuilder nesnesinin parse methodu kullanılır
public DocumentBuilder getBuilder() throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
return factory.newDocumentBuilder();
}
public Document getDocument(String file) throws Exception{
DocumentBuilder builder=getBuilder();
return builder.parse(new File(file));
}
getBuilde method'u bize DocumentBuilder verir. getDocument methodu ise verilen bir file için Document nesnesini bize döndürür.
Artık Document nesnesini elde ettiğimize göre tüm bilgiyi basabiliriz. Önce
Element root=doc.getDocumentElement();
ile root element'i alınır. printNode bir Node'u ekrana basmak içindir. Node'un önce attribue'leri print edilir. Sonra tüm çocuklar elde edilir ve hepsi print edilir. printNode method'u recursive bir şekilde tüm node'lar bitene kadar devam edecektir.