我想在Java中讀取XML,但由於XML中對稱元素不對,無法讀取 - 還有,如何檢查節點是否可用或不如何通過Java 1.6讀取XML中的第三層節點
這是XML的
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<node-path path="USA">
<property-name>Name</property-name>
<property-value><![CDATA[Cat A]]></property-value>
</node-path>
<node-path path="Canada">
<property-name>Name</property-name>
<property-value />
</node-path>
<node-path path="Australia">
<property-name>Name</property-name>
<json-counter>1</json-counter>
<json-property><![CDATA[Cat A]]></json-property>
<json-property><![CDATA[Cat B]]></json-property>
<json-property><![CDATA[Cat C]]></json-property>
<json-counter>2</json-counter>
<json-property><![CDATA[Cat D]]></json-property>
<json-property><![CDATA[Cat E]]></json-property>
<json-property><![CDATA[Cat F]]></json-property>
<property-value />
</node-path>
<node-path path="UK">
<property-name>Name</property-name>
<property-value><![CDATA[0]]></property-value>
</node-path>
</Root>`
這是代碼我trying-
try {
File inputFile = new File("c://test.xml");
DocumentBuilderFactory dbFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
NodeList nListNodePath = doc.getElementsByTagName("node-path");
for (int i = 0; i < nListNodePath.getLength(); i++) {
Node nNodePath = nListNodePath.item(i);
if (nNodePath.getNodeType() == Node.ELEMENT_NODE) {
Element eElement1 = (Element) nNodePath;
System.out.println("Node Path--- : "+ eElement1.getAttribute("path"));
System.out.println("Property Name : " + eElement1.getElementsByTagName("property-name").item(0).getTextContent());
System.out.println("Property value : " + eElement1.getElementsByTagName("property-value").item(0).getTextContent());
System.out.println("Json Counter : " + eElement1.getElementsByTagName("json-counter").item(0).getTextContent());
System.out.println("JSON property : " + eElement1.getElementsByTagName("json-property").item(0).getTextContent());
}
}
*「無法讀取」*是什麼意思? – Andreas
我的意思是,我無法在java中讀取上述xml –
我剛剛在該XML上運行了您的代碼,並且它的讀取正常。由於第一個''中沒有''元素,因此代碼在'getElementsByTagName(「json-counter」)。item(0).getTextContent()'上的NPE上失敗了,但這是不同的。 XML解析沒有錯誤。 –
Andreas