0

我想解析一个 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 开始标签

4

2 回答 2

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>
于 2012-05-11T10:18:05.153 回答
1

除了缺少的命名空间定义之外,似乎还有一个不匹配的标签:

</LANGUAGENAME.LIST> 

没有对应的开始标签。

如果你谷歌你会得到很多好的链接——例如xml namespaces看看这里。

于 2012-05-11T13:34:58.943 回答