Hey Dave, thanks for pointing it out, I haven't seen this PageDocument.save()
thanks again. that works :))) -Matthias > -----Original Message----- > From: Dave Harrison [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 08, 2005 8:57 PM > To: [email protected] > Subject: Re: problems on modifing XML files with XML_BEANS > > > Hi Matthias, > > The problem here is you are saving the /contents/ out via the > PageDocument.Page type, rather than the PageDocument itself. > > In 1.0.3 you can get round this two ways: either by calling > save on the > document, or pass in XmlOptions.setSaveOuter(). > > An example never hurt (and I need the practice!). Try this: > > import java.io.File; > import java.io.StringWriter; > > import org.apache.xmlbeans.XmlOptions; > > import com.foo.*; > public class Test { > > public static void main(String args[]){ > PageDocument page = null; > StringWriter out = new StringWriter(); > > try{ > // Input your example doc: > page = PageDocument.Factory.parse(new File("doc.xml")); > > // Change something (add another container): > ContainerType container2 = > page.getPage().addNewContainer(); > container2.set(page.getPage().getContainerArray(0)); > > // Output > XmlOptions xmlOptions = new XmlOptions(); > xmlOptions.setSavePrettyPrint(); > out.append("Oops:\n"); > page.getPage().save(out, xmlOptions); > > out.append("\n\nFixed:\n"); > page.getPage().save(out, xmlOptions); > > out.append("\n\nFixedAgain:\n"); > page.save(out, xmlOptions); > } catch (Exception e){ > e.printStackTrace(); > return; > } > System.out.println(out.toString()); > } > } > > Check out the javadoc for XmlObject where all is explained! > http://xmlbeans.apache.org/docs/1.0.4/reference/index.html > > Hmm, seems 1.0.4's out and I didn't notice. > > All the best, > > Dave. > > > Matthias Wessendorf wrote: > > >Hi, > > > >I am using XmlBeans for reading content of xml files. That > works fine and all works like I expected. > > > >But when I try to write modified content to the specific xml > file, something goes wrong. I guess I am missing > >something. > > > >here are some steps of my process: > > > >I have schema and I generate java files. > >I have content inside a xml file (depends on that schema) > > > >Reading with "Factory.parse(xmlfile)" is not a problem (if I > DON'T change that stuff) > > > >here is my small schema: > >-------------------------------------------------------- > ><?xml version="1.0"?> > ><xs:schema > > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > targetNamespace="http://foo.com" > > xmlns:pb="http://foo.com" > > elementFormDefault="qualified"> > > > ><xs:element name="page"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="modification" type="xs:dateTime"/> > > <xs:element name="type" type="xs:string"/> > > <xs:element name="header" type="xs:string" /> > > <xs:element name="container" type="pb:containerType" > maxOccurs="unbounded"/> > > </xs:sequence> > > <xs:attribute use="required" name="id" type="xs:string" /> > > </xs:complexType> > ></xs:element> > > > > > ><xs:complexType name="containerType"> > > <xs:sequence> > > <xs:element name="modification" type="xs:dateTime"/> > > <xs:element name="type" type="xs:string"/> > > <xs:element name="contentblock" > type="pb:contentBlockType" maxOccurs="unbounded"/> > > <xs:element name="container" > type="pb:containerType" maxOccurs="unbounded"/> > > </xs:sequence> > ><xs:attribute use="required" name="id" type="xs:string" /> > ></xs:complexType> > > > ><xs:complexType name="contentBlockType"> > > <xs:sequence> > > <xs:element name="modification" type="xs:dateTime"/> > > <xs:element name="text" type="xs:string"/> > > <xs:element name="type" type="xs:string"/> > > <xs:element name="headline" type="xs:string" > minOccurs="0" maxOccurs="1" /> > > </xs:sequence> > > <xs:attribute use="required" name="id" type="xs:string" /> > ></xs:complexType> > ></xs:schema> > >-------------------------------------------------------- > > > >and here is a very small XML file (based upon schema): > >-------------------------------------------------------- > ><?xml version="1.0" encoding="utf-8"?> > ><page xmlns="http://FOO.com" id="content1"> > > <type>press</type> > > <header>HEADER</header> > > <modification>2005-04-27T09:30:10</modification> > > <container id="container1"> > > <type>textcontainer</type> > > <modification>2005-04-19T09:30:10</modification> > > <contentblock id="contentblock1"> > > <type>textcontent</type> > > <text>fooooooo bar BAR FOO</text> > > <modification>2005-05-30T09:30:10</modification> > > </contentblock> > > </container> > ></page > > > >-------------------------------------------------------- > > > > > >No I modify the stuff and after that I do: > > > >XmlOptions xmlOptions = new XmlOptions(); > > xmlOptions.setSavePrettyPrint(); > > page.save(xmlFile, xmlOptions); > > > > > >When I now read a second time my xml (the modified stuff) I > got this message: > >org.apache.xmlbeans.XmlException: C:\content1.xml:0: error: > The document is not a [EMAIL PROTECTED]://foo.com: multiple document elements > > > >I guess this is because of my (re-written) xml file has no > root element <page> > > > >my content1.xml looks now like: > > > ><?xml version="1.0" encoding="UTF-8"?> > ><xml-fragment id="content1"> > > <foo:type xmlns:foo="http://foo.com">press</foo:type> > > <foo:header xmlns:foo="http://foo.com">hallo1</foo:header> > > <foo:modification > xmlns:foo="http://foo.com">2005-06-08T16:57:23.672+02:00</foo: > modification> > > <foo:container id="container1" xmlns:foo="http://foo.com"> > > <foo:type>textcontainer</foo:type> > > <foo:modification>2005-04-19T09:30:10</foo:modification> > > <foo:contentblock id="contentblock1"> > > <foo:type>textcontent</foo:type> > > <foo:text>hallo3</foo:text> > > > <foo:modification>2005-06-08T16:57:23.672+02:00</foo:modification> > > <foo:headline>hallo2</foo:headline> > > </foo:contentblock> > > </foo:container> > ></xml-fragment> > > > > > >What am I doing wrong on using XmlBeans to *change* XML files? > > > >Thanks for any advice. > > > >-Matthias > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [EMAIL PROTECTED] > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

