2014-02-07 94 views
1

當我從我的JAXB生成的XSD/Schema類中編組XML時,根節點缺少xmlns:xsi信息,請參見下文。關於如何在我編組的XML中獲取名稱空間信息的任何想法?未出現在JAXB中的XSD名稱空間Marshalled 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

要讓xsi:noNamespaceSchemaLocation架構位置屬性出現在你需要使用JAXB_NO_NAMESPACE_SCHEMA_LOCATION屬性來設置它的Marshaller編組XML。

marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "../schemas/example.xsd"); 
相關問題