[jdom-interest] Why does passing a document through a socket sometimes hang the parser?

Tony Montgomery Smith tonyms at compuserve.com
Thu Feb 1 01:35:18 PST 2001


A relevant problem, though it is not necessarily the cause here, is that the
Xerces SAX parser doesn't work properly on socket input. My suggested
workarounds are in the updated FAQ -
http://xml.apache.org/xerces-j/faq-write.html#faq-11

This solution requires throwing a "finished" exception on logical EOF, rather
than trying to find a physical EOF, which obviously isn't there for a socket.
I've had to modify org.jdom.SAXBuilder as follows:

class SAXHandler extends DefaultHandler implements LexicalHandler {
.
.
    /** New variables used to discover the logical end of the document */
    private int level;
    private String firstTag;
.
.
    public void startElement(String namespaceURI, String localName,
                             String qName, Attributes atts) throws SAXException
{

        if (level == 0)
          firstTag = localName;
        ++level;
.
.
    public void endElement(String namespaceURI, String localName,
                           String rawName) throws SAXException {

        --level;
        if (firstTag.equals(localName) || (level == 0))
          throw new SAXException("Finished");

Tony Montgomery-Smith




More information about the jdom-interest mailing list