[英]Read xml file with more than one value in one tag in Java
我有這樣的xml文件
<Sample_Data>
<lastname Name="lastname" Value="FIRSTNAME" />
<firstname Name="firstname" Value="LASTNAME" />
<DM Name="DM" Value="93.2" />
<CP Name="CP" Value="7.7" />
</Sample_Data>
我需要使用Java讀取此文件,並且使用如下代碼:
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse("File.xml");
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("Sample_Data");
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("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
System.out.println("DM : " + eElement.getElementsByTagName("DM").item(0).getTextContent());
System.out.println("CP : " + eElement.getElementsByTagName("CP").item(0).getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
但是我無法獲取firstname,lastname,DM和CP的值,因此無法獲取它們的空值。
有人可以幫我解決這個問題嗎?
您所有的元素都沒有文本節點。 因此getTextContent()
為空。 您應該改為閱讀屬性。
getElementsByTagName().item(0)
返回一個Node
,因此您應該首先將其Element
為Element
。
((Element) eElement.getElementsByTagName("firstname").item(0)).getAttribute("Value")
在保護代碼中,您還應該檢查NodeList
eElement.getElementsByTagName("firstname")
包含某些項目。
我會說,最好的辦法是獲取適當的XML文件。 這樣,您就不必解析多個屬性。
你明白了:
<Sample_Data>
<lastname Name="lastname" Value="FIRSTNAME" />
<firstname Name="firstname" Value="LASTNAME" />
<DM Name="DM" Value="93.2" />
<CP Name="CP" Value="7.7" />
</Sample_Data>
相反,您應該有類似的東西:
<Sample_Data>
<lastname> FIRSTNAME </lastname>
<firstname> firstname </firstname>
<DM> 93.2 <DM/>
<CP> 7.7 </CP>
</Sample_Data>
使用起來更容易嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.