2012-08-23 50 views
2

我生成使用JAXB OpenOffice的XML缺席,而且需要一個xml:space="preserve"屬性應用到t元素。生成帶屬性的XML這是從架構

<r> 
     <t> 
      foo 
     </t> 
    </r> 

應該

<r> 
     <t xml:space="preserve"> 
      foo 
     </t> 
    </r> 

我使用JAXB來從開放式辦公模式的Java類。 <t>類型被表示爲在CTRElt Java類字符串,所以沒有辦法設置此屬性。當我從現有文檔和Marshall解組,先前存在的space屬性不再存在。

架構的相關部分如下:

<xsd:element name="t" type="ST_Xstring" minOccurs="1" maxOccurs="1"> <xsd:annotation> <xsd:documentation>Text</xsd:documentation> </xsd:annotation> </xsd:element>

<xsd:simpleType name="ST_Xstring"> <xsd:annotation> <xsd:documentation>Escaped String</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string" /> </xsd:simpleType>

我怎樣才能生成XML已爲此所需space屬性?修改架構不是一個選項。我需要自定義JAXB嗎?

+0

你可能使用'XmlAdapter'來處理這種情況下,使用下面的文章可以幫助:HTTP://blog.bdoughan .COM/2011/08/XML的模式到Java-generating.html –

+0

@BlaiseDoughan,這可以讓你在標記格式的價值,但我不明白的方式來定製標籤元素本身,通過添加。的屬性 –

+0

可能重複的[JAXB:追加請求XML的字段而不modfying JAXB java類(http://stackoverflow.com/questions/11827978/jaxb-append-field-of-request-xml-without-modfying-jaxb -java級) –

回答

0

我最終生成XML和使用正則表達式來添加屬性:(