I looked at the org.apache.xml.serialize classes for the first time today and I can't seem to get a simple XMLSerializer example to work. I keep getting NullPointerExceptions all over the place.
Has anyone else seen these problems? Is it a usage problem? Perhaps we should have part of the documentation talk about how to use the new serializer APIs. Anybody interested in writing those docs? Also, I think I saw some bugs in the code. But I'd like to get an answer on whether I'm using them correctly before I start fixing bugs in the source. I've included the program below as well as the stack trace of the exception. // BEGIN Test.java package test; import org.apache.xerces.parsers.DOMParser; import org.apache.xml.serialize.Method; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.Serializer; import org.apache.xml.serialize.SerializerFactory; import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.Document; public class Test { public static void main(String argv[]) throws Exception { DOMParser parser = new DOMParser(); SerializerFactory factory = SerializerFactory.getSerializerFactory(Method.XML); for (int i = 0; i < argv.length; i++) { final String arg = argv[i]; System.err.println("argv["+i+"]: "+arg); parser.parse(arg); Document document = parser.getDocument(); OutputFormat format = new OutputFormat(document, "UTF-8", false); Serializer serializer = factory.makeSerializer(format); serializer.asDOMSerializer().serialize(document); } } } // END Test.java // BEGIN personal.xml <?xml version="1.0"?> <!DOCTYPE personnel SYSTEM "personal.dtd"> <?xml-stylesheet type='text/xsl' href='personal.xsl'?> <personnel> <person id="H.MARUYAMA" > <name><family>MARUYAMA</family> <given>Hiroshi</given></name> <email>[EMAIL PROTECTED]</email> <link subordinates=" N.URAMOTO K.TAMURA "/> </person> <person id="N.URAMOTO"> <name><family>URAMOTO</family> <given>Naohiko</given></name> <email>[EMAIL PROTECTED]</email> <link manager=" H.MARUYAMA"/> </person> <person id="K.TAMURA"> <name> <family>TAMURA</family> <given>Kent</given> </name> <!-- This URL is mail address.--> <url href="mailto:[EMAIL PROTECTED]"/> <url href="mailto:[EMAIL PROTECTED]"/> <link manager="H.MARUYAMA"/> </person> </personnel> // END personal.xml // BEGIN personal.dtd <?xml encoding="US-ASCII"?> <!ELEMENT personnel (person)+> <!ATTLIST person note CDATA #IMPLIED contr (true|false) "false" id ID #REQUIRED> <!ELEMENT person (name,email*,url*,link?)> <!ELEMENT family (#PCDATA)> <!ELEMENT given (#PCDATA)> <!ELEMENT name (family,given?)> <!ELEMENT email (#PCDATA)> <!ELEMENT url EMPTY> <!ATTLIST url href CDATA "http://"> <!ELEMENT link EMPTY> <!ATTLIST link manager IDREF #IMPLIED subordinates IDREFS #IMPLIED> <!NOTATION gif SYSTEM "photoshop.exe"> <!ENTITY internal-entity "entity-value"> <!ENTITY external-entity PUBLIC "-//ENTITY" "external-entity.ent"> <!ENTITY unparsed-entity SYSTEM "unparsed-entity.ent" NDATA gif> // END personal.dtd // BEGIN Stack Trace Exception in thread "main" java.lang.NullPointerException: at org.apache.xml.serialize.BaseMarkupSerializer.printDoctypeURL(BaseMarkupSerializer.java:1261) at org.apache.xml.serialize.BaseMarkupSerializer.unparsedEntityDecl(BaseMarkupSerializer.java:638) at org.apache.xml.serialize.BaseMarkupSerializer.serializeNode(BaseMarkupSerializer.java:773) at org.apache.xml.serialize.BaseMarkupSerializer.serialize(BaseMarkupSerializer.java:385) at test.Test.main(Test.java:27) // END Stack Trace -- Andy Clark * IBM, JTC - Silicon Valley * [EMAIL PROTECTED]