XSD命名空间不出现在JAXB Marshalled XML中

时间:2014-02-07 17:10:43

标签: java xml jaxb xsd

当我从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>

...

1 个答案:

答案 0 :(得分:1)

要在编组的XML中显示xsi:noNamespaceSchemaLocation架构位置属性,您需要使用Marshaller属性在JAXB_NO_NAMESPACE_SCHEMA_LOCATION上设置它。

marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "../schemas/example.xsd");