xmlbeans - 设置复杂类型的内容

时间:2009-04-10 06:57:42

标签: java xml xmlbeans

我的xsd文件包含:

                <xs:sequence>
                    <xs:element name="Book">
                        <xs:complexType>
                            <xs:attribute name="author" type="xs:string" />
                            <xs:attribute name="title" type="xs:string" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>

使用xmlbeans,我可以使用以下方法轻松设置属性:

    Book book= books.addNewBook();
    book.setTitle("The Lady and a Little Dog");

我知道我可以使用newCursor()来设置元素的内容,但这是最好的方法吗?

object.newCursor().setTextValue(builer.toString());

2 个答案:

答案 0 :(得分:1)

我不太明白你的问题。

我认为您的XSD将为您提供Java类来生成这样的XML:

<book author="Fred" title="The Lady and a Little Dog" />

你的意思是你想在XML元素中设置“内部”文本,所以你最终得到这样的XML吗?

<book>
  <author>Fred</author>
  <title>The Lady and a Little Dog</title>
</book>

如果是这样,请将XSD更改为此,以使用嵌套元素而不是属性:

<xs:sequence>
    <xs:element name="Book">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="author" type="xs:string" />
            <xs:element name="title" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:sequence>

然后你就可以做到:

Book book= books.addNewBook();
book.setAuthor("Fred");
book.setTitle("The Lady and a Little Dog");

<强>更新

好的 - 我现在明白了。

试试这个:

<xs:element name="Book"  minOccurs="0" maxOccurs="unbounded">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="author" type="xs:string" />
        <xs:attribute name="title" type="xs:string" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>    
</xs:element>  

然后:

    Book book1 = books.addNewBook();
    book1.setAuthor("Fred");
    book1.setTitle("The Lady and a Little Dog");
    book1.setStringValue("This is some text");

    Book book2 = books.addNewBook();
    book2.setAuthor("Jack");
    book2.setTitle("The Man and a Little Cat");
    book2.setStringValue("This is some more text");

哪个应该像这样给出XML,我认为这就是你想要的:

<Book author="Fred" title="The Lady and a Little Dog">This is some text</Book>
<Book author="Jack" title="The Man and a Little Cat">This is some more text</Book>

答案 1 :(得分:0)

我不确定这是否正是您所要求的,但使用XMLBeans设置属性或元素值的最佳方法是使用XMLBeans生成的getter和setter。

对于您的光标问题,可能会有一些更有用的上下文。