当我从JAXB生成的XSD / Schema类编组XML时,根节点缺少xmlns:xsi信息,请参阅下文。关于如何在我的编组XML中获取命名空间信息的任何想法?
目前的马歇尔结果:
<exampleType>
所需马歇尔结果:
<exampleType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../schemas/example.xsd">
我的架构(示例部分):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0.1">
<xs:element name="project" type="exampleType">
<xs:annotation>
<xs:documentation>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../schemas/example.xsd"
</xs:documentation>
</xs:annotation>
...
答案 0 :(得分:1)
要在编组的XML中显示xsi:noNamespaceSchemaLocation
架构位置属性,您需要使用Marshaller
属性在JAXB_NO_NAMESPACE_SCHEMA_LOCATION
上设置它。
marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "../schemas/example.xsd");