2012-05-11 81 views
0

我想解析XML文件。它拋出異常創建對象:使用Java中的XPath解析XML時發生致命錯誤

Document doc = builder.parse("Response.xml"); 

例外:

[Fatal Error] Response.xml:63:67: The prefix "UDF" for element "UDF:RTSIDUDF.LIST" is not bound. 
Exception in thread "main" org.xml.sax.SAXParseException: The prefix "UDF" for element "UDF:RTSIDUDF.LIST" is not bound. 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at tallyreqandresponse.Ledger.main(Ledger.java:38) 
Java Result: 1 

示例XML代碼:

<A> 
<LANGUAGENAME.LIST> 
    <NAME.LIST TYPE="String"> 
     <NAME>ABC India (P) Ltd.,</NAME> 
    </NAME.LIST> 
    <LANGUAGEID TYPE="Number"> 1033</LANGUAGEID> 
    <UDF:RTSIDUDF.LIST DESC="`RTSIDUDF`" ISLIST="YES" TYPE="Number"> 
     <UDF:RTSIDUDF DESC="`RTSIDUDF`"> 1387</UDF:RTSIDUDF> 
    </UDF:RTSIDUDF.LIST> 
    </LANGUAGENAME.LIST> 
</A> 

請幫我出這一點。

編輯注:新增LANGUAGENAME.LIST打開標籤

+1

您需要具有UDF名稱空間描述的xmlns。 – yatul

回答

2

所以用XML解析器拒絕了您輸入的標記沒有命名空間格式良好的XML。您需要用例如

<A> 
<NAME.LIST TYPE="String"> 
     <NAME>ABC India (P) Ltd.,</NAME> 
</NAME.LIST> 
<LANGUAGEID TYPE="Number"> 1033</LANGUAGEID> 
     <UDF:RTSIDUDF.LIST xmlns:UDF="http://example.com/" DESC="`RTSIDUDF`" ISLIST="YES" TYPE="Number"> 
         <UDF:RTSIDUDF DESC="`RTSIDUDF`"> 1387</UDF:RTSIDUDF> 
     </UDF:RTSIDUDF.LIST> 
    </LANGUAGENAME.LIST> 
</A> 
+0

你能給參考xmnls .. – Dhinakar

+1

請參閱http://www.w3.org/TR/REC-xml-names/格式規範。另外請注意'xmlns:UDF =「http://example.com/」'就是一個例子,我不認識你的格式,所以我不能把它和URL聯繫起來。 –

1

除了缺少的命名空間定義,它似乎也有一個不匹配的標籤:

</LANGUAGENAME.LIST> 

沒有相應的開始標記。

如果你的谷歌xml namespaces你有很多很好的鏈接 - 看看here例如。

+0

抱歉..現在已更新 – Dhinakar