I have the xml file cXml.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<clients>
<entity class="movieRental.domain.Client">
<field name="name" type="java.lang.String" value="mary"/>
<field name="age" type="int" value="23"/>
<field name="id" type="java.lang.Object" value="1"/>
</entity>
<entity class="movieRental.domain.Client">
<field name="name" type="java.lang.String" value="anne"/>
<field name="age" type="int" value="34"/>
<field name="id" type="java.lang.Object" value="2"/>
</entity>
<entity class="movieRental.domain.Client">
<field name="name" type="java.lang.String" value="john"/>
<field name="age" type="int" value="22"/>
<field name="id" type="java.lang.Object" value="3"/>
</entity>
<entity class="movieRental.domain.Client">
<field name="name" type="java.lang.String" value="miriam"/>
<field name="age" type="int" value="28"/>
<field name="id" type="java.lang.Object" value="7"/>
</entity>
</clients>
and I want to read from it and to print on the console.My code Java for this is:
package movieRental.util;
import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
public class ClientX {
public static void main(String argv[]) {
try {
File fXmlFile = new File("C:\\Users\\Adina\\Desktop\\proj1-vers2\\data\\cXml.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("entity");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("Entity class : " + eElement.getAttribute("class"));
System.out.println("Name : " + eElement.getElementsByTagName("name").item(0).getTextContent());
System.out.println("Type : " + eElement.getElementsByTagName("type").item(0).getTextContent());
System.out.println("Value : " + eElement.getElementsByTagName("value").item(0).getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
When I run this class it gives me:
Current Element :entity
Entity class : movieRental.domain.Client
java.lang.NullPointerException
at movieRental.util.ClientX.main(ClientX.java:46)
How to print all the values from the xml file? Thank you.