【发布时间】:2016-04-02 05:17:25
【问题描述】:
我有一个如下的 XML 文档:
<Transactions>
<Transaction>
<TransactionType>Account Payable</TransactionType>
<TransactionFor>Supplier</TransactionFor>
<TransactionDate>09/11/2015 00:40:31</TransactionDate>
<ItemReference>Hotels</ItemReference>
<Amount>3420.00</Amount>
<AmountPaid>0.00</AmountPaid>
<Balance>3420.00</Balance>
<Status>Open</Status>
<SupplierID>3930d9cd-1d8a-4e4d-99d3-4cd4b208795d</SupplierID>
</Transaction>
<Transaction>
<TransactionType>Account Receivable</TransactionType>
<TransactionFor>Consumer</TransactionFor>
<TransactionDate>09/11/2015 00:40:31</TransactionDate>
<ItemReference>Hotels</ItemReference>
<Amount>3420.00</Amount>
<AmountPaid>3420.00</AmountPaid>
<Balance>0.00</Balance>
<Status>Closed</Status>
<ConsumerID>65e3dbb6-4353-4fbb-8e8b-28d0c09dc728</ConsumerID>
</Transaction>
</Transactions>
当一个标签不同时,例如supplierId 和consumerId,我如何在 Java 中解析这个?
我已经实现了这个代码,但是得到了NullPointerException:
NodeList nList8 = doc.getElementsByTagName("Transaction");
for (int temp8 = 0; temp8 < nList8.getLength(); temp8++)
{
Node nNode8 = nList8.item(temp8);
if (nNode8.getNodeType() == Node.ELEMENT_NODE)
{
Element eElement8 = (Element) nNode8;
System.out.println("TransactionType : " + eElement8.getElementsByTagName("TransactionType").item(0).getTextContent());
System.out.println("TransactionFor : " + eElement8.getElementsByTagName("TransactionFor").item(0).getTextContent());
System.out.println("TransactionDate : " + eElement8.getElementsByTagName("TransactionDate").item(0).getTextContent());
System.out.println("ItemReference : " + eElement8.getElementsByTagName("ItemReference").item(0).getTextContent());
System.out.println("Amount : " + eElement8.getElementsByTagName("Amount").item(0).getTextContent());
System.out.println("AmountPaid : " + eElement8.getElementsByTagName("AmountPaid").item(0).getTextContent());
System.out.println("Balance : " + eElement8.getElementsByTagName("Balance").item(0).getTextContent());
System.out.println("Status : " + eElement8.getElementsByTagName("Status").item(0).getTextContent());
if(eElement8.getElementsByTagName("SupplierID").item(0).getTextContent()==null)
{
System.out.println("ConsumerID : " + eElement8.getElementsByTagName("ConsumerID").item(0).getTextContent());
}
else if(eElement8.getElementsByTagName("ConsumerID").item(0).getTextContent() == null)
System.out.println("SupplierID : " + eElement8.getElementsByTagName("SupplierID").item(0).getTextContent());
}
}
【问题讨论】:
-
@SyedAqib 您在 NodeList nList8 = doc.getElementsByTagName("Transaction"); 中得到空指针异常;这一行 measn doc 为 null.. 尝试调试