JAXB:如何避免 xmlns:xsi 的重复命名空间定义
我有一个 JAXB 设置,其中我使用@XmlJavaTypeAdapter将类型的对象替换为仅包含该人的 UUID 类型的对象。这完全可以正常工作。但是,生成的 XML 每次使用时都会重新声明相同的命名空间 ()。虽然这通常是可以的,但感觉不对劲。Person
PersonRef
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
如何配置 JAXB 以在文档的最开头声明 xmlns:xsi?是否可以手动将命名空间声明添加到根元素?
以下是我想要实现的示例:
当前:
<person uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a">
<relation type="CHILD">
<to xsi:type="personRef" uuid="56a930c0-5499-467f-8263-c2a9f9ecc5a0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</relation>
<relation type="CHILD">
<to xsi:type="personRef" uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</relation>
<!-- SNIP: some more relations -->
</person>
想:
<person uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<relation type="CHILD">
<to xsi:type="personRef" uuid="56a930c0-5499-467f-8263-c2a9f9ecc5a0"/>
</relation>
<relation type="CHILD">
<to xsi:type="personRef" uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a"/>
</relation>
<!-- SNIP: some more relations -->
</person>