2011-07-21 83 views
0

這是一個與此類似的問題:xmlbeans - set content of a complex type但不完全相同。我正在嘗試做的是在atom feed中設置contentEntry的內容。XMLBeans綁定Atom,設置條目內容

這裏是contentType的原子xsd定義,即在原子提要中輸入的內容標記。

<xs:complexType name="contentType" mixed="true"> 
    <xs:annotation> 
     <xs:documentation> 
      The Atom content construct is defined in section 4.1.3 of the format spec. 
     </xs:documentation> 
    </xs:annotation> 
    <xs:sequence> 
     <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence> 
    <xs:attribute name="type" type="xs:string"/> 
    <xs:attribute name="src" type="xs:anyURI"/> 
    <xs:attributeGroup ref="atom:commonAttributes"/> 
</xs:complexType> 

由xmlbean'scomp編譯後,我得到一個很好的jar文件,使我能夠做到以下幾點。

EntryType curEntry; 
curEntry = atomFeed.addNewEntry(); 
ContentType curContent = curEntry.addNewContent(); 
curContent.setBase("base"); 
curContent.setLang("en-EN"); 
curContent.setSrc("none"); 
curContent.setType("none"); 

,這是輸出爲

<content xml:base="base" xml:lang="en-EN" src="none" type="none"/> 

我真的不想與官方混亂(如官方爲我能找到)XSD的原子,但我缺少的方法是能夠設置curContent的實際文本表示。只有其他設置函數(XmlObject對象)和setNil()被設置。

我怎樣才能改變這種做法,我可以得到:

<content xml:base="base" xml:lang="en-EN" src="none" type="none">Content of this entry</content> 

感謝

回答

0

您需要放入XmlCursor地插入混合內容。例如,

ContentType content = x.addNewContent(); 
    content.setType("none"); 

    XmlCursor cur = null; 
    try 
    { 
     cur = content.newCursor(); 
     cur.toFirstContentToken(); 
     cur.insertChars("Hello World"); 
    } 
    finally 
    { 
     cur.dispose(); 
    } 
+0

謝謝你,完美的工作。 – wildrabbit