Class PositionXmlParser

java.lang.Object
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.
  • Method Summary

    Modifier and Type Method Description
    static org.w3c.dom.Node findNodeAtLineAndCol​(org.w3c.dom.Document document, int line, int column)
    Finds the leaf node at the given offset.
    static org.w3c.dom.Node findNodeAtOffset​(org.w3c.dom.Document document, int offset)
    Finds the leaf node at the given offset.
    static SourcePosition getPosition​(org.w3c.dom.Node node)
    Returns the position for the given node.
    static SourcePosition 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).
    static java.lang.String getXmlString​(byte[] data, java.lang.String defaultCharset)
    Returns the String corresponding to the given byte array of XML data (with unknown encoding).
    static org.w3c.dom.Document parse​(byte[] data)  
    static org.w3c.dom.Document parse​(byte[] data, boolean namespaceAware)
    Parses the XML content from the given byte array.
    static org.w3c.dom.Document parse​(byte[] data, boolean namespaceAware, java.util.List<java.lang.String> parseErrors)
    Parses the XML content from the given byte array.
    static org.w3c.dom.Document parse​(java.io.InputStream input)  
    static org.w3c.dom.Document parse​(java.io.InputStream input, boolean namespaceAware)
    Parses the XML content from the given input stream.
    static org.w3c.dom.Document parse​(java.io.InputStream input, boolean namespaceAware, java.util.List<java.lang.String> parseErrors)
    Parses the XML content from the given input stream.
    static org.w3c.dom.Document parse​(java.lang.String xml)  
    static org.w3c.dom.Document parse​(java.lang.String xml, boolean namespaceAware)
    Parses the given XML content.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • parse

      public static org.w3c.dom.Document parse​(java.io.InputStream input, boolean namespaceAware) 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
      namespaceAware - whether the parser should be namespace aware
      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

      public static org.w3c.dom.Document parse​(java.io.InputStream input, boolean namespaceAware, java.util.List<java.lang.String> parseErrors) throws javax.xml.parsers.ParserConfigurationException, java.io.IOException
      Parses the XML content from the given input stream.

      If a non-recoverable parser error is encountered, parsing stops, an error message is added to the parseErrors list, and the returned document contains the elements up to the one where the error was encountered.

      Parameters:
      input - the input stream containing the XML to be parsed
      namespaceAware - whether the parser should be namespace aware
      parseErrors - parsing errors, if any, are appended to this list
      Returns:
      the corresponding document
      Throws:
      javax.xml.parsers.ParserConfigurationException - if a SAX parser is not available
      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

      public static org.w3c.dom.Document parse​(java.io.InputStream input) throws java.io.IOException, org.xml.sax.SAXException, javax.xml.parsers.ParserConfigurationException
      Throws:
      java.io.IOException
      org.xml.sax.SAXException
      javax.xml.parsers.ParserConfigurationException
      See Also:
      parse(InputStream, boolean)
    • parse

      public static org.w3c.dom.Document parse​(byte[] data) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException, java.io.IOException
      Throws:
      javax.xml.parsers.ParserConfigurationException
      org.xml.sax.SAXException
      java.io.IOException
      See Also:
      parse(byte[], boolean)
    • parse

      public static org.w3c.dom.Document parse​(java.lang.String xml) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException, java.io.IOException
      Throws:
      javax.xml.parsers.ParserConfigurationException
      org.xml.sax.SAXException
      java.io.IOException
      See Also:
      parse(String, boolean)
    • parse

      public static org.w3c.dom.Document parse​(byte[] data, boolean namespaceAware) 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)
      namespaceAware - whether the parser should be namespace aware
      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

      public static org.w3c.dom.Document parse​(byte[] data, boolean namespaceAware, java.util.List<java.lang.String> parseErrors) throws javax.xml.parsers.ParserConfigurationException, java.io.IOException
      Parses the XML content from the given byte array.

      If a non-recoverable parser error is encountered, parsing stops, an error message is added to the parseErrors list, and the returned document contains the elements up to the one where the error was encountered.

      Parameters:
      data - the raw XML data (with unknown encoding)
      namespaceAware - whether the parser should be namespace aware
      parseErrors - parsing errors, if any, are appended to this list
      Returns:
      the corresponding document
      Throws:
      javax.xml.parsers.ParserConfigurationException - if a SAX parser is not available
      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

      public static org.w3c.dom.Document parse​(java.lang.String xml, boolean namespaceAware) 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
      namespaceAware - whether the parser should be namespace aware
      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
    • getXmlString

      public static java.lang.String getXmlString​(byte[] data, java.lang.String defaultCharset)
      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
      defaultCharset - the default charset to use if not specified by an encoding prologue attribute or a byte order mark
      Returns:
      a string corresponding to the XML data
    • getPosition

      public static SourcePosition getPosition​(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

      public static SourcePosition getPosition​(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
    • findNodeAtOffset

      public static org.w3c.dom.Node findNodeAtOffset​(org.w3c.dom.Document document, int offset)
      Finds the leaf node at the given offset.
      Parameters:
      document - root node
      offset - offset to look for
      Returns:
      the leaf node at that offset, if any
    • findNodeAtLineAndCol

      public static org.w3c.dom.Node findNodeAtLineAndCol​(org.w3c.dom.Document document, int line, int column)
      Finds the leaf node at the given offset.
      Parameters:
      document - root node
      line - the line
      column - the column, or -1
      Returns:
      the leaf node at that offset, if any