jwo.utils.xml
Class DOMProcessor

java.lang.Object
  extended by jwo.utils.xml.DOMProcessor

public class DOMProcessor
extends Object

Handles DOM processing allowing the reading and writing of hierarchical structures as XML files. Uses the Document Object Model (DOM) to store the tree of nodes, therefore not suitable for very large structures. For reading very large structures represented as XML, use SAXProcessor instead.

Version:
2.3, 11th February, 2009.
Author:
Jo Wood.

Constructor Summary
DOMProcessor()
          Creates a new empty DOM ready for processing.
DOMProcessor(Document dom)
          Wraps the given DOM in this processor allowing it to be written as an XML file, or appended with new nodes.
DOMProcessor(InputStream inStream)
          Reads XML from the given input stream and constructs a DOM from it.
DOMProcessor(String fileName)
          Reads and the given XML file and constructs a DOM from it.
 
Method Summary
 void addAttribute(String name, String value, Node node)
          Adds the given attribute to the given node.
 void addComment(String comment)
          Adds the given comment to the root of the DOM.
 void addComment(String comment, Node node)
          Adds the given comment to the given node.
 Node addElement(String name)
          Adds a new element to the root of the DOM.
 Node addElement(String name, Node existingElement)
          Adds a new element to the given one within the DOM.
 Node addElement(String name, String text, Node existingElement)
          Adds a new element to the given one within the DOM.
 void addText(String text, Node node)
          Adds text as the child of the given node.
 String[] getAttributes(String attributeName)
          Searches the entire DOM for a given attribute and returns the value associated with it.
 String[] getAttributes(String attributeName, Node node)
          Searches the given node and its children for a given attribute and returns the value associated with it.
 Node[] getElements(String name)
          Returns a list of the DOM elements with the given name.
 Node[] getElements(String name, Node node)
          Returns a list of the DOM elements with the given name that are nested within the given node.
 String getNodeAttribute(String attributeName, Node node)
          Searches the given node for a given attribute and returns the value associated with it.
 Node getNodeElement(String name, Node node)
          Returns a DOM element with the given name that is the child of the given node.
 Node[] getNodeElements(String name, Node node)
          Returns the DOM elements with the given name that are the children of the given node.
 String getNodeText(Node node)
          Searches for a given node and returns text associated with it.
 String[] getText(Node node)
          Returns any text associated found in the given node or its children.
 String[] getText(String elementName)
          Searches the entire DOM for a given element and returns text associated with it.
 String[] getText(String elementName, Node node)
          Searches for a given element and returns text associated with it.
 boolean isEmpty()
          Reports whether we have an empty DOM.
 boolean readXML(InputStream inStream)
          Reads the XML from the given input stream and converts it into a DOM.
 boolean readXML(String fileName)
          Reads the given XML file and converts it into a DOM.
 void renameElement(Node existingElement, String newName)
          Renames the given element with the given new name.
 boolean writeXML()
          Displays the DOM stored within this class as an XML file with default document settings on standard output.
 boolean writeXML(OutputStream outStream)
          Converts the DOM stored within this class into an XML file with default document settings.
 boolean writeXML(OutputStream outStream, String version, String encoding, Boolean standalone)
          Converts the DOM stored within this class into an XML file with the given document settings.
 boolean writeXML(String fileName)
          Converts the DOM stored within this class into an XML file with default document settings.
 boolean writeXML(String version, String encoding, Boolean standalone)
          Displays the DOM stored within this class as an XML file with the given document settings on standard output.
 boolean writeXML(String fileName, String version, String encoding, Boolean standalone)
          Converts the DOM stored within this class into an XML file with the given document settings.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DOMProcessor

public DOMProcessor()
Creates a new empty DOM ready for processing.


DOMProcessor

public DOMProcessor(Document dom)
Wraps the given DOM in this processor allowing it to be written as an XML file, or appended with new nodes.

Parameters:
dom - Document Object Model to use in processor.

DOMProcessor

public DOMProcessor(String fileName)
Reads and the given XML file and constructs a DOM from it.

Parameters:
fileName - Name of XML file to read.

DOMProcessor

public DOMProcessor(InputStream inStream)
Reads XML from the given input stream and constructs a DOM from it.

Parameters:
inStream - Stream from which to read XML.
Method Detail

isEmpty

public boolean isEmpty()
Reports whether we have an empty DOM.

Returns:
True if DOM is empty.

addElement

public Node addElement(String name)
Adds a new element to the root of the DOM.

Parameters:
name - Name of the new element
Returns:
New element in the DOM.

addElement

public Node addElement(String name,
                       Node existingElement)
Adds a new element to the given one within the DOM.

Parameters:
name - Name of the new element
existingElement - Element onto which the new element should be attached.
Returns:
New element in the DOM.

addElement

public Node addElement(String name,
                       String text,
                       Node existingElement)
Adds a new element to the given one within the DOM.

Parameters:
name - Name of the new element
text - Text to attach to element or null if none required.
existingElement - Element onto which the new element should be attached.
Returns:
New element in the DOM.

renameElement

public void renameElement(Node existingElement,
                          String newName)
Renames the given element with the given new name.

Parameters:
existingElement - Element to rename.
newName - New name to give element.

addAttribute

public void addAttribute(String name,
                         String value,
                         Node node)
Adds the given attribute to the given node.

Parameters:
name - Attribute name.
value - Attribute value.
node - Element to attach attribute.

addComment

public void addComment(String comment)
Adds the given comment to the root of the DOM. Note that this method should only be called once a root node has been created in the DOM.

Parameters:
comment - Comment text.

addComment

public void addComment(String comment,
                       Node node)
Adds the given comment to the given node.

Parameters:
comment - Comment text.
node - Element to attach comment.

addText

public void addText(String text,
                    Node node)
Adds text as the child of the given node.

Parameters:
text - Text to add to node.
node - Element to attach text.

getText

public String[] getText(String elementName)
Searches the entire DOM for a given element and returns text associated with it. If more than one element with the given name exists, multiple text values are returned.

Parameters:
elementName - Element to search for.
Returns:
Array of strings associated with all occurrences of the given element. Array will be 0 length if none found.

getText

public String[] getText(Node node)
Returns any text associated found in the given node or its children. This is equivalent to calling getText(null,node). If more than one element containing text exists, multiple text values are returned.

Parameters:
node - Node from which to start search.
Returns:
Array of strings associated with all occurrences of text in the node or its children. Array will be 0 length if none found.

getText

public String[] getText(String elementName,
                        Node node)
Searches for a given element and returns text associated with it. If more than one element with the given name exists, multiple text values are returned.

Parameters:
elementName - Element to search for. If elementName is null, search will be for all text contained within the given node.
node - Node from which to start search.
Returns:
Array of strings associated with all occurrences of the given element. Array will be 0 length if none found.

getNodeText

public String getNodeText(Node node)
Searches for a given node and returns text associated with it. This version does not recurse to the node's children.

Parameters:
node - Node to search.
Returns:
Text associated with the node, or null if none found.

getAttributes

public String[] getAttributes(String attributeName)
Searches the entire DOM for a given attribute and returns the value associated with it. If there is more than one occurrence of the attribute, multiple text values are returned.

Parameters:
attributeName - Attribute to search for.
Returns:
Array of strings associated with all occurrences of the given attribute. Array will be 0 length if none found.

getAttributes

public String[] getAttributes(String attributeName,
                              Node node)
Searches the given node and its children for a given attribute and returns the value associated with it. If there is more than one occurrence of the attribute, multiple text values are returned.

Parameters:
attributeName - Attribute to search for.
node - Node from which to start search.
Returns:
Array of strings associated with all occurrences of the given attribute. Array will be 0 length if none found.

getNodeAttribute

public String getNodeAttribute(String attributeName,
                               Node node)
Searches the given node for a given attribute and returns the value associated with it. This version does not recurse to children of the given node.

Parameters:
attributeName - Attribute to search for.
node - Node from which to start search.
Returns:
Value associated with the attribute, or null if not found.

getElements

public Node[] getElements(String name)
Returns a list of the DOM elements with the given name. This can be used to provide the base of sub-trees for searches within nested elements.

Parameters:
name - Element name to search for.
Returns:
Array of elements with the given name. Array will be 0 length if none found.

getElements

public Node[] getElements(String name,
                          Node node)
Returns a list of the DOM elements with the given name that are nested within the given node. This can be used to provide the base of sub-trees for searches within nested elements. The order of matched elements is depth-first. For breadth-first searches, use getNodeElements and recursively search for children of returned nodes.

Parameters:
name - Element name to search for.
node - Node from which to start search.
Returns:
Array of elements with the given name. Array will be 0 length if none found.

getNodeElement

public Node getNodeElement(String name,
                           Node node)
Returns a DOM element with the given name that is the child of the given node. This is a non-recursive method that only looks for immediate children. Note that unlike getNodeElements() this method only returns the first matched child of the given node.

Parameters:
name - Element name to search for.
node - Node from which to examine children.
Returns:
Child node or null if none found.

getNodeElements

public Node[] getNodeElements(String name,
                              Node node)
Returns the DOM elements with the given name that are the children of the given node. This is a non-recursive method that only looks for immediate children. Array will be 0 length if none found.

Parameters:
name - Element name to search for.
node - Node from which to examine children.
Returns:
Child nodes or empty Node array if none found.

readXML

public boolean readXML(String fileName)
Reads the given XML file and converts it into a DOM.

Parameters:
fileName - Name of XML file to convert.
Returns:
True if converted successfully.

readXML

public boolean readXML(InputStream inStream)
Reads the XML from the given input stream and converts it into a DOM.

Parameters:
inStream - Input stream containing XML to convert.
Returns:
True if converted successfully.

writeXML

public boolean writeXML()
Displays the DOM stored within this class as an XML file with default document settings on standard output.

Returns:
Always true.

writeXML

public boolean writeXML(String version,
                        String encoding,
                        Boolean standalone)
Displays the DOM stored within this class as an XML file with the given document settings on standard output.

Parameters:
version - XML version, or null if default ('1.0') is to be used.
encoding - XML encoding, or null if encoding is not to be specified.
standalone - XML stand-alone status of XML file or null if not to be specified.
Returns:
Always true.

writeXML

public boolean writeXML(String fileName)
Converts the DOM stored within this class into an XML file with default document settings.

Parameters:
fileName - Name of file to contain the XML.
Returns:
true if successful XML generation.

writeXML

public boolean writeXML(OutputStream outStream)
Converts the DOM stored within this class into an XML file with default document settings.

Parameters:
outStream - Output stream representing file to contain the XML.
Returns:
true if successful XML generation.

writeXML

public boolean writeXML(String fileName,
                        String version,
                        String encoding,
                        Boolean standalone)
Converts the DOM stored within this class into an XML file with the given document settings.

Parameters:
fileName - Name of file to contain the XML.
version - XML version, or null if default ('1.0') is to be used.
encoding - XML encoding, or null if encoding is not to be specified.
standalone - XML stand-alone status of XML file or null if not to be specified.
Returns:
true if successful XML generation.

writeXML

public boolean writeXML(OutputStream outStream,
                        String version,
                        String encoding,
                        Boolean standalone)
Converts the DOM stored within this class into an XML file with the given document settings.

Parameters:
outStream - Output stream representing file to contain the XML.
version - XML version, or null if default ('1.0') is to be used.
encoding - XML encoding, or null if encoding is not to be specified.
standalone - XML stand-alone status of XML file or null if not to be specified.
Returns:
true if successful XML generation.


Copyright Jo Wood, 1996-2009, last modified, 17th April, 2009