java - JAXB 解码错误,没有 namespace 的包信息文件?

标签 java xml jaxb unmarshalling

我正在尝试使用 JAXB 从文件中解码 XML。我也有一个网络服务。 我不想使用命名空间,而不是 Web 服务定义的命名空间。

我收到以下错误:

Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"CustomerName"). Expected elements are <{http://www.ws.NET}CustomerName>

我认为解决方案是将 package-info.java 文件更改为不使用命名空间。这是正确的方法吗?我应该对此文件进行哪些更改? package-info.java 文件如下所示:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.ws.NET", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package mynewpackage;

谢谢你的帮助

最佳答案

QUALIFIED 更改为 UNQUALIFIED 如果顶级元素(对应于 @XmlRootElement 注释类) 在目标命名空间中但其子项不在,例如

<ns:Response xmlns:ns="http://www.ws.NET">
  <CustomerName>Ian</CustomerName>
</ns:Response>

但如果顶级(在本例中为 Response)元素也是不合格的,这将无济于事。

关于java - JAXB 解码错误,没有 namespace 的包信息文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25682207/

相关文章:

Java 静态与线程堆栈

maven - jaxb2-maven-plugin 为默认值 =INF 的 double 生成无效源

jaxb - 使用 JAXB 解码 XML 时 WebSphereApplication NoClassDefFoundError

python - 如何使用python处理libxml2 parserError异常

java - Jaxb 编码 Point 变量

java - 在java中获取JSON值

java - 速度优化java字符串包含与正则表达式匹配

java - Gson如何解析嵌套数组

xml - EXSLT:没有更多的 DTM ID 可用

xml - 更新现有的 Atom 条目