Class 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

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      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 checkDtd)
      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 checkDtd)
      Parses the XML content from the given input stream.
      static 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
    • Method Detail

      • parse

        @NonNull
        public static org.w3c.dom.Document parse​(@NonNull
                                                 java.io.InputStream input,
                                                 boolean checkDtd)
                                          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
        checkDtd - whether or not download the DTD and validate it
        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

        @NonNull
        public static org.w3c.dom.Document parse​(@NonNull
                                                 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

        @NonNull
        public static org.w3c.dom.Document parse​(@NonNull
                                                 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

        @NonNull
        public static org.w3c.dom.Document parse​(@NonNull
                                                 byte[] data,
                                                 boolean checkDtd)
                                          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)
        checkDtd - whether or not download the DTD and validate it
        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

        @NonNull
        public static 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

        @NonNull
        public static java.lang.String getXmlString​(@NonNull
                                                    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

        @NonNull
        public static java.lang.String getXmlString​(@NonNull
                                                    byte[] data,
                                                    @NonNull
                                                    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

        @NonNull
        public static SourcePosition 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

        @NonNull
        public static SourcePosition 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