我正在使用JAXB从Java对象生成XML,它是一个实时,相当高的消息速率应用程序,并且在大多数情况下都能正常工作。然而,偶尔也没有任何明显的线索,为什么,我在生成的XML中获得重复的命名空间声明。例如:
<UpdateRequest xmlns="http://xml.mycomp.com/ns/myservice"
xmlns="http://xml.mycomp.com/ns/myservice">
<field1>value</field1>
...
</UpdateRequest>
之前有没有人见过这种行为?
答案 0 :(得分:0)
检查此类的xsd代码是否允许创建重复属性的多个实例。如果是这样,您可以避免重复设置每个 UpdateRequest 对象的 xmlns 属性的实例数。
如果问题是你的代码(可能有两次创建此属性)并且你限制了属性的实例数量(如上所述),程序将在运行时显示错误抱怨你正在尝试插入已定义的属性。
答案 1 :(得分:0)
此link可能会提供解决方案。
这是从上述链接中逐字引用的相关部分,可能与您相关:
类似显式包含模式 键入实例文档的元素 如果您实例化JAXB,则会发生 元素使用一些对象 (摘要)XML模式基类型 该元素将具有 基本类型的元素标记。
其次,避免使用xs:anySimpleType 这也将创造多个 对绑定到的命名空间的引用 xsi和xs,以及类型属性 包含实际类型。你呢 失去JAXB打字的优势 您的Java类中的字段 你失去了Java的所有检查 编译器可能会这样做,并为 解组你必须处理 所有的转换都是你自己。