2009-04-10 4 views
0

Meine XSD-Datei enthält:XMLBeans - Set Inhalt eines komplexen Typs

   <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> 

Mit XMLBeans ich die Attribute festlegen können einfach mit:

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

Ich weiß, dass ich newCursor verwenden() den Inhalt des Elements zu setzen, aber ist das der beste Weg?

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

Antwort

1

Ich verstehe Ihre Frage nicht ganz.

Ich denke, Ihre XSD wird Ihnen Java-Klassen XML so zu produzieren:

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

Haben Sie meinen Sie den „inneren“ Text in einem XML-Element festlegen möchten, so können Sie mit XML am Ende wie Dies?

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

Wenn ja, Ihre XSD dies ändern, verschachtelte Elemente zu verwenden, anstatt Attribute:

<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> 

Dann werden Sie einfach in der Lage sein zu tun:

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

UPDATE

OK - ich verstehe jetzt.

Versuchen Sie folgendes:

<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> 

Und dann:

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"); 

Welche XML wie diese geben sollte, was ich denke, ist das, was Sie wollen:

<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> 
+0

Das, was ich würde So wie mein XML aussieht: Dies ist ein Text Wie kann ich das" Dies ist ein Text "-Bit? Danke – dogbane

+0

Ich habe die Antwort aktualisiert - hoffentlich wird das mehr helfen. –

0

Ich bin mir nicht sicher, ob dies ist genau das, was Sie fragen, aber der beste Weg, um den Wert von Attributen oder Elementen setzen XMLBeans verwendet, ist die XMLBeans generierte Getter und Setter zu verwenden.

Vielleicht ein wenig mehr Kontext für Ihre Frage Cursor wäre hilfreich.