org.apache.commons.jxpath.xml
Class DocumentContainer

java.lang.Object
  extended by org.apache.commons.jxpath.xml.XMLParser2
      extended by org.apache.commons.jxpath.xml.DocumentContainer
All Implemented Interfaces:
java.io.Serializable, Container, XMLParser

public class DocumentContainer
extends XMLParser2
implements Container

An XML document container reads and parses XML only when it is accessed. JXPath traverses Containers transparently - you use the same paths to access objects in containers as you do to access those objects directly. You can create XMLDocumentContainers for various XML documents that may or may not be accessed by XPaths. If they are, they will be automatically read, parsed and traversed. If they are not - they won't be read at all.

Version:
$Revision: 668329 $ $Date: 2008-06-16 16:59:48 -0500 (Mon, 16 Jun 2008) $
Author:
Dmitri Plotnikov
See Also:
Serialized Form

Field Summary
private  java.lang.Object document
           
private  java.lang.String model
           
static java.lang.String MODEL_DOM
          DOM constant
static java.lang.String MODEL_JDOM
          JDOM constant
private static java.util.HashMap parserClasses
           
private static java.util.HashMap parsers
           
private static long serialVersionUID
           
private  java.net.URL xmlURL
           
 
Constructor Summary
DocumentContainer(java.net.URL xmlURL)
          Use this constructor if the desired model is DOM.
DocumentContainer(java.net.URL xmlURL, java.lang.String model)
          Construct a new DocumentContainer.
 
Method Summary
private static XMLParser getParser(java.lang.String model)
          Maps a model type to a parser.
 java.lang.Object getValue()
          Reads XML, caches it internally and returns the Document.
 java.lang.Object parseXML(java.io.InputStream stream)
          Parses XML using the parser for the specified model.
static void registerXMLParser(java.lang.String model, java.lang.String parserClassName)
          Add a class of a custom XML parser.
static void registerXMLParser(java.lang.String model, XMLParser parser)
          Add an XML parser.
 void setValue(java.lang.Object value)
          Throws an UnsupportedOperationException.
 
Methods inherited from class org.apache.commons.jxpath.xml.XMLParser2
isCoalescing, isExpandEntityReferences, isIgnoringComments, isIgnoringElementContentWhitespace, isNamespaceAware, isValidating, setCoalescing, setExpandEntityReferences, setIgnoringComments, setIgnoringElementContentWhitespace, setNamespaceAware, setValidating
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MODEL_DOM

public static final java.lang.String MODEL_DOM
DOM constant

See Also:
Constant Field Values

MODEL_JDOM

public static final java.lang.String MODEL_JDOM
JDOM constant

See Also:
Constant Field Values

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

parserClasses

private static java.util.HashMap parserClasses

parsers

private static java.util.HashMap parsers

document

private java.lang.Object document

xmlURL

private java.net.URL xmlURL

model

private java.lang.String model
Constructor Detail

DocumentContainer

public DocumentContainer(java.net.URL xmlURL)
Use this constructor if the desired model is DOM.

Parameters:
xmlURL - is a URL for an XML file. Use getClass().getResource(resourceName) to load XML from a resource file.

DocumentContainer

public DocumentContainer(java.net.URL xmlURL,
                         java.lang.String model)
Construct a new DocumentContainer.

Parameters:
xmlURL - is a URL for an XML file. Use getClass().getResource (resourceName) to load XML from a resource file.
model - is one of the MODEL_* constants defined in this class. It determines which parser should be used to load the XML.
Method Detail

registerXMLParser

public static void registerXMLParser(java.lang.String model,
                                     XMLParser parser)
Add an XML parser. Parsers for the models "DOM" and "JDOM" are pre-registered.

Parameters:
model - model name
parser - parser

registerXMLParser

public static void registerXMLParser(java.lang.String model,
                                     java.lang.String parserClassName)
Add a class of a custom XML parser. Parsers for the models "DOM" and "JDOM" are pre-registered.

Parameters:
model - model name
parserClassName - parser classname

getValue

public java.lang.Object getValue()
Reads XML, caches it internally and returns the Document.

Specified by:
getValue in interface Container
Returns:
Object

parseXML

public java.lang.Object parseXML(java.io.InputStream stream)
Parses XML using the parser for the specified model.

Specified by:
parseXML in interface XMLParser
Specified by:
parseXML in class XMLParser2
Parameters:
stream - InputStream
Returns:
Object

setValue

public void setValue(java.lang.Object value)
Throws an UnsupportedOperationException.

Specified by:
setValue in interface Container
Parameters:
value - value (not) to set

getParser

private static XMLParser getParser(java.lang.String model)
Maps a model type to a parser.

Parameters:
model - input model type
Returns:
XMLParser