David,
I've started porting the serializes to C++ for use with TransforMiiX,
unfortunatly they can't readily be used in Xerces since TransforMiiX and
Xerces use different DOM implementations and SAX interfaces. The W3C
stayed clear of giving C++ bindings, probably due to all the
inconsistencies across platforms with C/C++. At one point Dave Megginson
proposed a C++ SAX interface, but he never made it official and it's not
available from his website. Again it's not an easy task...should I throw
exceptions or not? Should I rely on the STL or not? Most C++ compilers
don't support the STL well.
In anycase I can look into getting something working for Xerces when I
get back from ApacheCon. Hopefully if I do, Assaf will maintain both the
Java and C++ code bases...but I'll have to bribe him I think.
Of course feel free to jump right in and do a direct port for Xerces C
if you are interested in doing so.
--Keith
The biggest problem
"David A. Lee" wrote:
>
> Any idea if this object will be provided in the C++ XERCES-C ?
> I'm now using code coppied from DOMPrint ... but really am supprised
> its not a supplied class instead of just code in the sample.
>
> > 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
> >
> >