JAXB生成的XML中的重复名称空间声明

时间:2010-01-25 09:49:36

标签: java jaxb

我正在使用JAXB从Java对象生成XML,它是一个实时,相当高的消息速率应用程序,并且在大多数情况下都能正常工作。然而,偶尔也没有任何明显的线索,为什么,我在生成的XML中获得重复的命名空间声明。例如:

<UpdateRequest xmlns="http://xml.mycomp.com/ns/myservice" 
               xmlns="http://xml.mycomp.com/ns/myservice">
    <field1>value</field1>
    ...
</UpdateRequest>

之前有没有人见过这种行为?

2 个答案:

答案 0 :(得分:0)

检查此类的xsd代码是否允许创建重复属性的多个实例。如果是这样,您可以避免重复设置每个 UpdateRequest 对象的 xmlns 属性的实例数。

如果问题是你的代码(可能有两次创建此属性)并且你限制了属性的实例数量(如上所述),程序将在运行时显示错误抱怨你正在尝试插入已定义的属性。

答案 1 :(得分:0)

link可能会提供解决方案。

这是从上述链接中逐字引用的相关部分,可能与您相关:

  

类似显式包含模式   键入实例文档的元素   如果您实例化JAXB,则会发生   元素使用一些对象   (摘要)XML模式基类型   该元素将具有   基本类型的元素标记。

     

其次,避免使用xs:anySimpleType   这也将创造多个   对绑定到的命名空间的引用   xsi和xs,以及类型属性   包含实际类型。你呢   失去JAXB打字的优势   您的Java类中的字段   你失去了Java的所有检查   编译器可能会这样做,并为   解组你必须处理   所有的转换都是你自己。

相关问题