我寫一個Java程序中,我解析XML輸入文件,它看起來像這樣:如何在不考慮Java中的名稱空間名稱的情況下從XML獲取節點?
...
<ems:DeterminationRequest>
<ems:MessageInformation>
<ns17:MessageID xmlns:ns17="http://www.calheers.ca.gov/EHITSAWSInterfaceCommonSchema">1000225404</ns17:MessageID>
<ns17:MessageTimeStamp xmlns:ns17="http://www.calheers.ca.gov/EHITSAWSInterfaceCommonSchema">2015-07-28T01:17:04</ns17:MessageTimeStamp>
<ns17:SendingSystem xmlns:ns17="http://www.calheers.ca.gov/EHITSAWSInterfaceCommonSchema">CH</ns17:SendingSystem>
<ns17:ReceivingSystem xmlns:ns17="http://www.calheers.ca.gov/EHITSAWSInterfaceCommonSchema">LD</ns17:ReceivingSystem>
<ns17:ServicingFipsCountyCode xmlns:ns17="http://www.calheers.ca.gov/EHITSAWSInterfaceCommonSchema">037</ns17:ServicingFipsCountyCode>
</ems:MessageInformation>
</ems:DeterminationRequest>
...
現在我試圖讓節點「EMS:MessageInformation」不考慮命名空間名稱「EMS」。所以我嘗試了以下幾行代碼:
Document doc = db.parse(new FileInputStream(new File("D:\\test.xml")));
Node element = doc.getDocumentElement().getElementsByTagNameNS("*","MessageInformation").item(0);
System.out.println(element.getNodeName());
但是它給了空指針異常,因爲函數不是讀取所需的節點。我經歷了這個link作爲參考。有人能告訴我我在這裏做錯了嗎?
感謝您的答覆:)。 「DocumentBuilderFactory.setNamespaceAware(真)」;這個改變對我有效。 – Madhusudan