XML parsing using DOM parser java

Nikumbh

Nikumbh

@nikumbh-lmTCgS Oct 15, 2024
I'm finding problem in parsing the xml file using the DOM parser. Where my problem is i have a parent tag called employee, where it's children node are having the same name but different attribute value. So when i run the below code it leads to the following error. Could Anyone please help me.


ERROR:

java.lang.NullPointerException
at XMLParser.getValue(XMLParser.java:53)
at XMLParser.main(XMLParser.java:30)


// this is my xml file named sample.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<result>
<Employee>
<row no="1">
<FL val="ID">
<![CDATA[22844]]>
</FL>
<FL val="Name">
<![CDATA[SureshKumar]]>
</FL>
<FL val="Gender">
<![CDATA[Male]]>
</FL>
</row>
<row no="2">
<FL val="ID">
<![CDATA[22845]]>
</FL>
<FL val="Name">
<![CDATA[Nikumbh]]>
</FL>
<FL val="Gender">
<![CDATA[Male]]>
</FL>
</row>
</Employee>
</result>


// this is XMLParser.java used to parse the Sample.xml file
 
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class XMLParser {
 
public static void main(String args[]) {
try {
 
File employee = new File("Sample.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(employee);
doc.getDocumentElement().normalize();
 
System.out.println("root of xml file" + doc.getDocumentElement().getNodeName());
NodeList nodes = doc.getElementsByTagName("row");
System.out.println("==========================");
 
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
 
 
if (node.getNodeType() == Node.ELEMENT_NODE) {
        Element element = (Element) node;
        System.out.println("ID: " + getValue("ID", element));
        System.out.println("Name: " + getValue("Name", element));
        System.out.println("Gender: " + getValue("Gender", element));
        S
        }
 
}
}
 
catch (Exception ex)
{
ex.printStackTrace();
}
}
 
private static String getValue(String tag, Element element)
{
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
return node.getNodeValue();
}
}
 
 

Replies

Welcome, guest

Join CrazyEngineers to reply, ask questions, and participate in conversations.

CrazyEngineers powered by Jatra Community Platform

  • Nikumbh

    Nikumbh

    @nikumbh-lmTCgS Jun 26, 2013

    Actually, i'm not able to get the children tag value. Where it's ids are same.
    ie.,
    <FL value="ID">
    </FL>
    <FL value="Name">
    </FL>
    <FL value="Gender">
    </FL>

    here the
    Element element = (Element) node;

    getValue("ID", element)
    getValue("Name", element)
    getValue("Gender", element)

    fails to fetch the value.