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]

Reply via email to