2012-05-11 62 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