net.n3.nanoxml
Class StdXMLBuilder

java.lang.Object
  extended by net.n3.nanoxml.StdXMLBuilder
All Implemented Interfaces:
IXMLBuilder

public class StdXMLBuilder
extends java.lang.Object
implements IXMLBuilder

StdXMLBuilder is a concrete implementation of IXMLBuilder which creates a tree of XMLElement from an XML data source.

Version:
$Name$, $Revision: 1183 $
Author:
Marc De Scheemaecker
See Also:
XMLElement

Field Summary
private  XMLElement root
          The root element of the parsed XML tree.
private  java.util.Stack stack
          This stack contains the current element and its parents.
 
Constructor Summary
StdXMLBuilder()
          Creates the builder.
 
Method Summary
 void addAttribute(java.lang.String key, java.lang.String nsPrefix, java.lang.String nsSystemID, java.lang.String value, java.lang.String type)
          This method is called when a new attribute of an XML element is encountered.
 void addPCData(java.io.Reader reader, java.lang.String systemID, int lineNr)
          This method is called when a PCDATA element is encountered.
 void elementAttributesProcessed(java.lang.String name, java.lang.String nsPrefix, java.lang.String nsSystemID)
          This method is called when the attributes of an XML element have been processed.
 void endElement(java.lang.String name, java.lang.String nsPrefix, java.lang.String nsSystemID)
          This method is called when the end of an XML elemnt is encountered.
protected  void finalize()
          Cleans up the object when it's destroyed.
 java.lang.Object getResult()
          Returns the result of the building process.
 void newProcessingInstruction(java.lang.String target, java.io.Reader reader)
          This method is called when a processing instruction is encountered.
 void startBuilding(java.lang.String systemID, int lineNr)
          This method is called before the parser starts processing its input.
 void startElement(java.lang.String name, java.lang.String nsPrefix, java.lang.String nsSystemID, java.lang.String systemID, int lineNr)
          This method is called when a new XML element is encountered.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stack

private java.util.Stack stack
This stack contains the current element and its parents.


root

private XMLElement root
The root element of the parsed XML tree.

Constructor Detail

StdXMLBuilder

public StdXMLBuilder()
Creates the builder.

Method Detail

finalize

protected void finalize()
                 throws java.lang.Throwable
Cleans up the object when it's destroyed.

Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

startBuilding

public void startBuilding(java.lang.String systemID,
                          int lineNr)
This method is called before the parser starts processing its input.

Specified by:
startBuilding in interface IXMLBuilder
Parameters:
systemID - the system ID of the XML data source
lineNr - the line on which the parsing starts

newProcessingInstruction

public void newProcessingInstruction(java.lang.String target,
                                     java.io.Reader reader)
This method is called when a processing instruction is encountered. PIs with target "xml" are handled by the parser.

Specified by:
newProcessingInstruction in interface IXMLBuilder
Parameters:
target - the PI target
reader - to read the data from the PI

startElement

public void startElement(java.lang.String name,
                         java.lang.String nsPrefix,
                         java.lang.String nsSystemID,
                         java.lang.String systemID,
                         int lineNr)
This method is called when a new XML element is encountered.

Specified by:
startElement in interface IXMLBuilder
Parameters:
name - the name of the element
nsPrefix - the prefix used to identify the namespace
nsSystemID - the system ID associated with the namespace
systemID - the system ID of the XML data source
lineNr - the line in the source where the element starts
See Also:
endElement(java.lang.String, java.lang.String, java.lang.String)

elementAttributesProcessed

public void elementAttributesProcessed(java.lang.String name,
                                       java.lang.String nsPrefix,
                                       java.lang.String nsSystemID)
This method is called when the attributes of an XML element have been processed.

Specified by:
elementAttributesProcessed in interface IXMLBuilder
Parameters:
name - the name of the element
nsPrefix - the prefix used to identify the namespace
nsSystemID - the system ID associated with the namespace
See Also:
startElement(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int), addAttribute(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)

endElement

public void endElement(java.lang.String name,
                       java.lang.String nsPrefix,
                       java.lang.String nsSystemID)
This method is called when the end of an XML elemnt is encountered.

Specified by:
endElement in interface IXMLBuilder
Parameters:
name - the name of the element
nsPrefix - the prefix used to identify the namespace
nsSystemID - the system ID associated with the namespace
See Also:
startElement(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)

addAttribute

public void addAttribute(java.lang.String key,
                         java.lang.String nsPrefix,
                         java.lang.String nsSystemID,
                         java.lang.String value,
                         java.lang.String type)
                  throws java.lang.Exception
This method is called when a new attribute of an XML element is encountered.

Specified by:
addAttribute in interface IXMLBuilder
Parameters:
key - the key (name) of the attribute
nsPrefix - the prefix used to identify the namespace
nsSystemID - the system ID associated with the namespace
value - the value of the attribute
type - the type of the attribute ("CDATA" if unknown)
Throws:
java.lang.Exception - If an exception occurred while processing the event.

addPCData

public void addPCData(java.io.Reader reader,
                      java.lang.String systemID,
                      int lineNr)
               throws java.lang.Exception
This method is called when a PCDATA element is encountered. A Java reader is supplied from which you can read the data. The reader will only read the data of the element. You don't need to check for boundaries. If you don't read the full element, the rest of the data is skipped. You also don't have to care about entities; they are resolved by the parser.

Specified by:
addPCData in interface IXMLBuilder
Parameters:
reader - the Java reader from which you can retrieve the data
systemID - the system ID of the XML data source
lineNr - the line in the source where the element starts
Throws:
java.lang.Exception - If an exception occurred while processing the event.

getResult

public java.lang.Object getResult()
Returns the result of the building process. This method is called just before the parse() method of IXMLParser returns.

Specified by:
getResult in interface IXMLBuilder
Returns:
the result of the building process.
See Also:
IXMLParser.parse()