2011-10-24 29 views
3

這裏是我的pages.xsd如何告訴我的JAXB輸出包含對創建它的XSD的引用?

<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:mac="http://www.tvworks.com/tva/xml/ns/max/data-types" 
      elementFormDefault="qualified" 
      attributeFormDefault="unqualified"> 

<xs:import namespace="http://www.tvworks.com/tva/xml/ns/max/data-types" 
      schemaLocation="http://developer.tva.tvworks.com/xml/ns/max/data-types-3.2.xsd"/> 


<xs:element name="data"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="scenes" type="scenesType"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:complexType name="scenesType"> 
    <xs:sequence> 
    <xs:element name="row" minOccurs="1" maxOccurs="unbounded"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="page" type="mac:page-ref"/> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:schema> 

這裏是我的pages.xjb

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      version="2.1"> 
    <bindings schemaLocation="pages.xsd" version="1.0""> 
     <schemaBindings> 
      <package name="com.mycompany.pages"/> 
     </schemaBindings> 
    </bindings> 
</bindings> 

這裏是我想要的輸出的樣子,注意xsi:noNamespaceSchemaLocation="pages.xsd"

<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="pages.xsd"> 
<scenes> 
    <row> 
    <page>page1</page> 
    </row> 
    <row> 
    <page>page2</page> 
    </row> 
    <row> 
    <page>page3</page> 
    </row> 
    <row> 
    <page>page4</page> 
    </row> 
</scenes> 
</data> 

我如何獲得該屬性到data元素的JAXB自動輸出?

回答

3

在您的Marshaller上設置屬性jaxb.noNamespaceSchemaLocation與期望的值。

編輯:查看Marshaller documentation以及method setProperty支持的屬性部分以獲取更多信息。

+2

+1 - 欲瞭解更多信息,請參閱:http://blog.bdoughan.com/2011/08/jaxb-and-java-io-files-streams-readers.html –

+1

啊,有類常量!更好。然後使用'Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION'而不是普通的String作爲屬性鍵,就像Blaise在他的博客文章中顯示的那樣。 –

相關問題