[英]How to read from an xml file field java
我有 xml 文件 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>
我想从中读取并在控制台上打印。我的代码 Java 是:
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();
}
}
}
当我运行这个类时,它给了我:
Current Element :entity
Entity class : movieRental.domain.Client
java.lang.NullPointerException
at movieRental.util.ClientX.main(ClientX.java:46)
如何打印 xml 文件中的所有值? 谢谢你。
试试这个:
System.out.println("Entity class : " + eElement.getAttribute("class"));
NodeList children = eElement.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
if (children.item(i).getNodeName().equalsIgnoreCase("field")) {
System.out.println("Name : " + children.item(i).getAttributes().getNamedItem("name"));
System.out.println("Type : " + children.item(i).getAttributes().getNamedItem("type"));
System.out.println("Value : " + children.item(i).getAttributes().getNamedItem("value"));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.