How to parse the following xml using DOM parser?



How to parse the following xml using DOM parser name node is repeating upto n level



<Services>
<service name ="qwerty" id="">
<File rootProfile="abcd" extension="acd">
<Columns>
<name id="0" profileName="DATE" type="java"></name>
<name id="1" profileName="DATE" type="java"></name>
.
.
.
<Columns>
</File>
<File rootProfile="efg" extension="ghi">
<Columns>
<name id="a" profileName="DATE" type="java"></name>
<name id="b" profileName="DATE" type="java"></name>
.
.
.
<Columns>
</File>
</service>
</Services>



am used the following code to get the values:



public static void xmlEditor() throws SAXException, IOException {
try {
File xmlFile = new File("config/ServiceConfig.xml");
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = null;

documentBuilder = documentFactory.newDocumentBuilder();

org.w3c.dom.Document doc = documentBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
NodeList nodeList0 = doc.getElementsByTagName("Service");
NodeList nodeList1 = doc.getElementsByTagName("File");
NodeList nodeList2 = doc.getElementsByTagName("name");
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

for (int temp0 = 0; temp0 < nodeList0.getLength(); temp0++) {
Node node0 = nodeList0.item(temp0);

System.out.println("\nElement type :" + node0.getNodeName());
Element Service = (Element) node0;

if (node0.getNodeType() == Node.ELEMENT_NODE) {
System.out.println("-----------------"+temp0+"----------------------------------");
System.out.println("name : " + Service.getAttribute("name"));
System.out.println("id : " + Service.getAttribute("id"));


for (int temp = 0; temp < nodeList1.getLength(); temp++) {
Node node1 = nodeList1.item(temp);

System.out.println("\nElement type :" + node1.getNodeName());

Element File = (Element) node1;

if (node1.getNodeType() == Node.ELEMENT_NODE) {

System.out.println("rootProfile:" + File.getAttribute("rootProfile"));
System.out.println("extension : " + File.getAttribute("extension"));


for (int temp1 = 0; temp1 < nodeList2.getLength(); temp1++) {
Node node2 = nodeList2.item(temp1);

System.out.println("\nElement type :" + node2.getNodeName());

Element name = (Element) node2;

if (node2.getNodeType() == Node.ELEMENT_NODE) {

System.out.println("id:" + name.getAttribute("id"));
System.out.println("profileName : " + name.getAttribute("profileName"));
System.out.println("type : " + name.getAttribute("type"));

}

}
}

}
}

}


And am getting first level of node File itself am getting all valus of name including next file node help to avoid this the output am getting is


name:----- id :-----


rootProfile:-------- extension:-----------


id:o profileName: type: id:1 profileName: type: id:a profileName: type: id:b profileName: rootProfile:-------- extension:-----------


id:o profileName: type: id:1 profileName: type: id:a profileName: type: id:b profileName:


No comments:

Post a Comment