[jdom-interest] Passing CharArrayReader to SAXBuilder build() method

Mark S Petrovic petrovic at corp.earthlink.net
Fri Dec 21 12:38:19 PST 2001

Good day.  I am an old C programmer who is new to Java and JDOM.

I've managed to read an XML document from a socket stream and cast
it into the character array, TASResult.  My reading of the build()
method API of SAXBuilder suggests that I can pass any type of Reader
object, which presumably includes CharArrayReader, as follows:

CharArrayReader cr = new CharArrayReader(TASresult);
SAXBuilder builder = new SAXBuilder(true);
Document doc = builder.build(cr);

The code compiles, but produces this at runtime

$ java avlclient "/cur?id=DEMO003&typ=x"  
org.xml.sax.SAXParseException: Illegal XML character:  �.
        at org.apache.crimson.parser.InputEntity.fatal(InputEntity.java:1097)
        at org.apache.crimson.parser.InputEntity.getc(InputEntity.java:360)
        at org.apache.crimson.parser.Parser2.getc(Parser2.java:2980)
        at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:506)
        at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
        at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:433)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:287)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:650)
        at avlclient.main(avlclient.java:98)

I suspect that the read() method of CharArrayReader is passing back
something that the build() method misinterprets.

Might someone be kind enough to explain to me why what I attempt
does not produce the desired result?

Thank you.

More information about the jdom-interest mailing list