com.android.utils
Class PositionXmlParser

java.lang.Object
  extended by com.android.utils.PositionXmlParser

public class PositionXmlParser
extends java.lang.Object

A simple DOM XML parser which can retrieve exact beginning and end offsets (and line and column numbers) for element nodes as well as attribute nodes.


Nested Class Summary
protected static class PositionXmlParser.DefaultPosition
           
protected static interface PositionXmlParser.Position
           
 
Constructor Summary
PositionXmlParser()
           
 
Method Summary
protected  PositionXmlParser.Position createPosition(int line, int column, int offset)
          Creates a position while constructing the DOM document.
 PositionXmlParser.Position getPosition(org.w3c.dom.Node node)
          Returns the position for the given node.
 PositionXmlParser.Position getPosition(org.w3c.dom.Node node, int start, int end)
          Returns the position for the given node.
static java.lang.String getXmlString(byte[] data)
          Returns the String corresponding to the given byte array of XML data (with unknown encoding).
 org.w3c.dom.Document parse(byte[] data)
          Parses the XML content from the given byte array
 org.w3c.dom.Document parse(java.io.InputStream input)
          Parses the XML content from the given input stream.
 org.w3c.dom.Document parse(java.lang.String xml)
          Parses the given XML content.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PositionXmlParser

public PositionXmlParser()
Method Detail

parse

@Nullable
public org.w3c.dom.Document parse(@NonNull
                                           java.io.InputStream input)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException
Parses the XML content from the given input stream.

Parameters:
input - the input stream containing the XML to be parsed
Returns:
the corresponding document
Throws:
javax.xml.parsers.ParserConfigurationException - if a SAX parser is not available
org.xml.sax.SAXException - if the document contains a parsing error
java.io.IOException - if something is seriously wrong. This should not happen since the input source is known to be constructed from a string.

parse

@Nullable
public org.w3c.dom.Document parse(@NonNull
                                           byte[] data)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException
Parses the XML content from the given byte array

Parameters:
data - the raw XML data (with unknown encoding)
Returns:
the corresponding document
Throws:
javax.xml.parsers.ParserConfigurationException - if a SAX parser is not available
org.xml.sax.SAXException - if the document contains a parsing error
java.io.IOException - if something is seriously wrong. This should not happen since the input source is known to be constructed from a string.

parse

@Nullable
public org.w3c.dom.Document parse(@NonNull
                                           java.lang.String xml)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException
Parses the given XML content.

Parameters:
xml - the XML string to be parsed. This must be in the correct encoding already.
Returns:
the corresponding document
Throws:
javax.xml.parsers.ParserConfigurationException - if a SAX parser is not available
org.xml.sax.SAXException - if the document contains a parsing error
java.io.IOException - if something is seriously wrong. This should not happen since the input source is known to be constructed from a string.

getXmlString

public static java.lang.String getXmlString(byte[] data)
Returns the String corresponding to the given byte array of XML data (with unknown encoding). This method attempts to guess the encoding based on the XML prologue.

Parameters:
data - the XML data to be decoded into a string
Returns:
a string corresponding to the XML data

getPosition

@Nullable
public PositionXmlParser.Position getPosition(@NonNull
                                                       org.w3c.dom.Node node)
Returns the position for the given node. This is the start position. The end position can be obtained via PositionXmlParser.Position.getEnd().

Parameters:
node - the node to look up position for
Returns:
the position, or null if the node type is not supported for position info

getPosition

@Nullable
public PositionXmlParser.Position getPosition(@NonNull
                                                       org.w3c.dom.Node node,
                                                       int start,
                                                       int end)
Returns the position for the given node. This is the start position. The end position can be obtained via PositionXmlParser.Position.getEnd(). A specific range within the node can be specified with the start and end parameters.

Parameters:
node - the node to look up position for
start - the relative offset within the node range to use as the starting position, inclusive, or -1 to not limit the range
end - the relative offset within the node range to use as the ending position, or -1 to not limit the range
Returns:
the position, or null if the node type is not supported for position info

createPosition

@NonNull
protected PositionXmlParser.Position createPosition(int line,
                                                            int column,
                                                            int offset)
Creates a position while constructing the DOM document. This method allows a subclass to create a custom implementation of the position class.

Parameters:
line - the line number for the position
column - the column number for the position
offset - the character offset
Returns:
a new position