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