This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
XML problems
- From: Marco Trudel <mtrudel at gmx dot ch>
- To: GCC Java <java at gcc dot gnu dot org>
- Date: Thu, 15 Feb 2007 09:21:53 +0100
- Subject: XML problems
Hey List
Here a long (very long) ago promised failing XML example (GCJ rev
121693). Reading XML works, printing (transforming) fails:
----- expected output start -----
reading xml:
<test>
<line>Just a line of Text.</line>
</test>
writing xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
<foo>abc</foo>
</test>
----- expected output end -----
----- actual output start -----
reading xml:
<test>
<line>Just a line of Text.</line>
</test>
writing xml:
Exception in thread "main" java.lang.NullPointerException
at gnu.xml.dom.ls.SAXEventSink.startDocument(XmlTest-1.1)
at XmlTest.writeXml(XmlTest-1.1)
----- actual output end -----
Are there any comments on it? Otherwise I'll add a bugreport for GNU
classpath (assuming it's a classpath issue).
Marco
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.DefaultHandler;
public class XmlTest extends DefaultHandler
{
private static StringBuffer sbReadedXml = new StringBuffer();
public static void main(String[] args) throws Exception
{
System.out.println("reading xml:");
readXml(new File("test.xml"));
System.out.println("\nwriting xml:");
writeXml();
}
private static void readXml(File f) throws Exception
{
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
SAXParser parser = factory.newSAXParser();
parser.parse(f, new OwnHandler());
System.out.println(sbReadedXml.toString());
}
private static void writeXml() throws Exception
{
SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
StreamResult stream = new StreamResult(System.out);
TransformerHandler handler = factory.newTransformerHandler();
Transformer trans=handler.getTransformer();
trans.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
trans.setOutputProperty(OutputKeys.INDENT,"yes");
handler.setResult(stream);
handler.startDocument();
AttributesImpl atts=new AttributesImpl();
handler.startElement("", "", "test", atts);
atts.clear();
handler.startElement("", "", "foo", atts);
handler.characters(new char[]{'a','b','c'}, 0, 3);
handler.endElement("", "", "foo");
handler.endElement("", "", "test");
handler.endDocument();
}
private static class OwnHandler extends DefaultHandler
{
public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException
{
sbReadedXml.append("<");
sbReadedXml.append(qName);
sbReadedXml.append(">");
}
public void endElement(String uri, String localName, String qName) throws SAXException
{
sbReadedXml.append("</");
sbReadedXml.append(qName);
sbReadedXml.append(">");
}
public void characters(char[] buf, int offset, int len) throws SAXException
{
sbReadedXml.append(buf, offset, len);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<test>
<line>Just a line of Text.</line>
</test>