The documentation is really sparse on this so maybe I'm just using it in
a way which is not intended but it appears to me that using the same
serializer for more than one document fails.
XMLSerializer serializer = new XMLSerializer(System.out, null);
System.out.println("Doc1:");
serializer.serialize(doc1);
System.out.println("Doc2:");
serializer.serialize(doc2);
gives:
Doc1:
<?xml version="1.0"?>
<el1><el1.2/></el1>
Doc2:
<el2><el1.1 a1="v1" a2="v2"><el1.1.1/></el1.1></el2>
The XML declaration is missing in the second output.
To make this work I have to patch BaseMarkupSerializer.java like this:
diff -c -r1.11 BaseMarkupSerializer.java
*** BaseMarkupSerializer.java 2000/02/23 21:41:18 1.11
--- BaseMarkupSerializer.java 2000/03/06 23:46:49
***************
*** 416,421 ****
--- 416,422 ----
if ( _writer == null )
throw new IllegalStateException( "SER002 No writer
supplied for serializer" );
try {
+ reset();
startDocument();
} catch ( SAXException except ) { }
serializeNode( doc );
Again, I'm not sure this is a valid use of it though, so I'm not sure
it's ok to commit my changes.
--
Arnaud Le Hors - IBM Cupertino, XML Technology Group