hi,
here are my trys for serializing sax-events and dom-trees together to one xml using 
jaxp interfaces:
who can explain me, wich way should work?

correct xml:
<?xml version="1.0" encoding="UTF-8"?>
<CHobjImport>
        <Test>
                <erstes>aber</erstes>
                <erstes>neisi</erstes>
        </Test>
        <Test>
                <erstes>naeme</erstes>
                <erstes>sie</erstes>
        </Test>
</CHobjImport>


first try:
domtree as DOMSource, transformerHander as SAXResult
transformerHandler as SAXSource, xml as result

    Result xmlResult=new StreamResult(new FileWriter("c:/temp/output.xml"));

    rootElementName="CHobjImport";
    SAXTransformerFactory saxTransformerFactory =
      (SAXTransformerFactory) TransformerFactory.newInstance();
    _transformerHandler=saxTransformerFactory.newTransformerHandler();
    _transformerHandler.setResult(xmlResult);
    _transformerHandler.startDocument();
    _transformerHandler.startElement("",rootElementName,rootElementName,new 
AttributesImpl());

    //serialize a dom tree
    TransformerFactory tfactory = TransformerFactory.newInstance();
    Transformer transformer=tfactory.newTransformer();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    transformer.transform(new DOMSource(node),new SAXResult(_transformerHandler));    

    _transformerHandler.endElement("",rootElementName,rootElementName);
    _transformerHandler.endDocument();


output is:

<?xml version="1.0" encoding="UTF-8"?>
<CHobjImport<?xml version="1.0" encoding="UTF-8"
  >
  <Test>
    <erstes>aber</erstes>
    <erstes>neisi</erstes>
  </Test>
  <?xml version="1.0" encoding="UTF-8"?>
  <Test>
    <erstes>naeme</erstes>
    <erstes>sie</erstes>
  </Test>
</CHobjImport>

try 2:
create one writer, create two StreamResults
transformerHandler as SAXSource, writer as result
domtree as DOMSource, writer as result

    Writer w=new FileWriter("c:/temp/output.xml");
    Result xmlResult1=new StreamResult(w);
    Result xmlResult2=new StreamResult(w);

    rootElementName="CHobjImport";
    SAXTransformerFactory saxTransformerFactory =
      (SAXTransformerFactory) TransformerFactory.newInstance();
    _transformerHandler=saxTransformerFactory.newTransformerHandler();
    _transformerHandler.setResult(xmlResult1);
    _transformerHandler.startDocument();
    _transformerHandler.startElement("",rootElementName,rootElementName,new 
AttributesImpl());

    //serialize a dom tree
    TransformerFactory tfactory = TransformerFactory.newInstance();
    Transformer transformer=tfactory.newTransformer();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    transformer.transform(new DOMSource(node), xmlResult2);    

    _transformerHandler.endElement("",rootElementName,rootElementName);
    _transformerHandler.endDocument();


output is:

<?xml version="1.0" encoding="UTF-8"?>
<CHobjImport
        <Test>
                <erstes>aber</erstes>
                <erstes>neisi</erstes>
        </Test>
        <Test>
                <erstes>naeme</erstes>
                <erstes>sie</erstes>
        </Test>
/>



last try:
create one writer, create one StreamResults
throws an ArrayOutOfBoundException and i'm not sure, if this is the proper way at all.



Adrian Stadelmann
Software Development

---------------------------------------------------
BISON Schweiz AG
Eichweid 5
CH-6203 Sempach-Station

Phone direct    +41 41 469 65 03
E-Mail  mailto:[EMAIL PROTECTED]
Homepage        www.bison-group.com


Reply via email to