nu.staldal.xtree
Class TreeBuilder

java.lang.Object
  extended by nu.staldal.xtree.TreeBuilder
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.ErrorHandler

public class TreeBuilder
extends java.lang.Object
implements org.xml.sax.ContentHandler, org.xml.sax.ErrorHandler

Build an XTree from a SAX2 event stream, or by parsing an XML document. The TreeBuilder ensures that the tree will not have two adjacent Text nodes.


Field Summary
static boolean DEBUG
           
 
Constructor Summary
TreeBuilder()
          Constructs a TreeBuilder, ready to receive SAX events.
TreeBuilder(java.net.URL base)
          Constructs a TreeBuilder, ready to receive SAX events.
 
Method Summary
 void characters(char[] ch, int start, int length)
           
 void endDocument()
           
 void endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qname)
           
 void endPrefixMapping(java.lang.String prefix)
           
 void error(org.xml.sax.SAXParseException e)
           
 void fatalError(org.xml.sax.SAXParseException e)
           
static org.xml.sax.InputSource fileToInputSource(java.io.File file)
          Create an SAX InputSource from a File object.
 Element getTree()
          Obtain the XTree built from SAX events.
 void ignorableWhitespace(char[] ch, int start, int length)
           
static Element parseXML(org.xml.sax.InputSource xmlInput, boolean validateDTD)
          Parse an XML document into an XTree.
 void processingInstruction(java.lang.String target, java.lang.String data)
           
 void setDocumentLocator(org.xml.sax.Locator locator)
           
 void skippedEntity(java.lang.String name)
           
 void startDocument()
           
 void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qname, org.xml.sax.Attributes atts)
           
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 void warning(org.xml.sax.SAXParseException e)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static final boolean DEBUG
See Also:
Constant Field Values
Constructor Detail

TreeBuilder

public TreeBuilder()
Constructs a TreeBuilder, ready to receive SAX events. Will not support xml:base.


TreeBuilder

public TreeBuilder(java.net.URL base)
Constructs a TreeBuilder, ready to receive SAX events.

Parameters:
base - base URL for the document, to support xml:base.
Method Detail

fileToInputSource

public static org.xml.sax.InputSource fileToInputSource(java.io.File file)
                                                 throws java.io.FileNotFoundException,
                                                        java.io.IOException
Create an SAX InputSource from a File object.

Parameters:
file - the file
Returns:
an InputSource
Throws:
java.io.FileNotFoundException - if the file doesn't exist
java.io.FileNotFoundException - if some I/O error occurs
java.io.IOException

parseXML

public static Element parseXML(org.xml.sax.InputSource xmlInput,
                               boolean validateDTD)
                        throws org.xml.sax.SAXParseException,
                               org.xml.sax.SAXException,
                               java.io.IOException
Parse an XML document into an XTree. Uses JAXP to find a parser. Will not support xml:base.

Parameters:
xmlInput - the input to parse
validateDTD - validate using DTD
Returns:
an XTree representation of the XML data
Throws:
org.xml.sax.SAXParseException - if the XML data is not valid
org.xml.sax.SAXException - if any other error occurs while parsing the XML data
java.io.IOException - if there was some I/O error while reading the input.

getTree

public Element getTree()
                throws java.lang.IllegalStateException
Obtain the XTree built from SAX events.

Throws:
java.lang.IllegalStateException - if the SAX events received so far doesn't constitues a well-formed XML document.

setDocumentLocator

public void setDocumentLocator(org.xml.sax.Locator locator)
Specified by:
setDocumentLocator in interface org.xml.sax.ContentHandler

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Specified by:
startDocument in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Specified by:
endDocument in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String localName,
                         java.lang.String qname,
                         org.xml.sax.Attributes atts)
                  throws org.xml.sax.SAXException
Specified by:
startElement in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endElement

public void endElement(java.lang.String namespaceURI,
                       java.lang.String localName,
                       java.lang.String qname)
                throws org.xml.sax.SAXException
Specified by:
endElement in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
                        throws org.xml.sax.SAXException
Specified by:
startPrefixMapping in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
                      throws org.xml.sax.SAXException
Specified by:
endPrefixMapping in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
Specified by:
characters in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws org.xml.sax.SAXException
Specified by:
ignorableWhitespace in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String data)
                           throws org.xml.sax.SAXException
Specified by:
processingInstruction in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

skippedEntity

public void skippedEntity(java.lang.String name)
                   throws org.xml.sax.SAXException
Specified by:
skippedEntity in interface org.xml.sax.ContentHandler
Throws:
org.xml.sax.SAXException

fatalError

public void fatalError(org.xml.sax.SAXParseException e)
                throws org.xml.sax.SAXParseException
Specified by:
fatalError in interface org.xml.sax.ErrorHandler
Throws:
org.xml.sax.SAXParseException

error

public void error(org.xml.sax.SAXParseException e)
           throws org.xml.sax.SAXParseException
Specified by:
error in interface org.xml.sax.ErrorHandler
Throws:
org.xml.sax.SAXParseException

warning

public void warning(org.xml.sax.SAXParseException e)
Specified by:
warning in interface org.xml.sax.ErrorHandler