XMLBeans ограничивает Atom, устанавливая содержимое записи - PullRequest
0 голосов
/ 21 июля 2011

Этот вопрос похож на этот: xmlbeans - установить содержимое сложного типа , но не совсем так. То, что я пытаюсь сделать, это установить содержимое contentEntry в ленте атомов.

Вот определение атома xsd для contentType, то есть тег содержимого для записи в ленте атома.

<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 для atom, но мне не хватает метода, позволяющего установить фактическое текстовое представление curContent. Устанавливаются только другие функции set (объект XmlObject) и setNil ().

Как я могу изменить это, чтобы я мог получить:

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

Спасибо

1 Ответ

0 голосов
/ 22 июля 2011

Вам нужно перейти в XmlCursor land, чтобы вставить смешанный контент.Например,

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

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