I have this xml file
<Cdtr>
<Nm>DEF Electronics</Nm>
<PstlAdr>
<AdrLine>Corn Exchange 5th Floor</AdrLine>
<AdrLine>Mark Lane 55</AdrLine>
<AdrLine>EC3R7NE London</AdrLine>
<AdrLine>GB</AdrLine>
</PstlAdr>
</Cdtr>
I am trying to parse the xml, get leaf tags names(which has values) and their respective values using dom parser in Java. Following is the code i am using for that.
public class GetNodeValues {
public static void main(String[] args) {
try {
String xmlFile = "C:/Users/Administrator/workspace/sample.xml";
File file = new File(xmlFile);
if(file.exists()){
// Create a factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Use the factory to create a builder
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
doc.getDocumentElement().normalize();
// Get a list of all elements in the document
NodeList list = doc.getElementsByTagName("*");
System.out.println("XML Elements: ");
for (int i=0; i<list.getLength(); i++) {
// Get element
Element element = (Element)list.item(i);
String nodnam = element.getNodeName();
NodeList nl = doc.getElementsByTagName(nodnam);
Element ele = (Element) nl.item(0);
if (ele.getChildNodes().getLength() > 0) // then it has text
String val = ele.getChildNodes().item(0).getNodeValue();
if (val.startsWith("\n")) { //Discarding pseudo nodes
}else {
System.out.println("Node: "+nodnam+" | Val: "+val); //print node names and values
}
}
}
}
else{
System.out.print("File not found!");
}
}
catch (Exception e) {
System.exit(1);
}
}
}
I am getting the following result.
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Corn Exchange 5th Floor
Please help. I am not understanding why its repeating the tag value. The expected output is
Node: AdrLine | Val: Corn Exchange 5th Floor
Node: AdrLine | Val: Mark Lane 55
Node: AdrLine | Val: EC3R7NE London
Node: AdrLine | Val: GB