Class XPathImpl

  • All Implemented Interfaces:
    IXPath

    public class XPathImpl
    extends Object
    implements IXPath
    IXPath that uses XPath to select nodes and get their value.
    Since:
    8.1.0
    Version:
    $Revision: 20491 $ $Date: 2017-08-29 11:10:05 -0300 (Tue, 29 Aug 2017) $
    • Constructor Detail

      • XPathImpl

        public XPathImpl​(Node document)
        Constructor that receives the document in context
        Parameters:
        document -
        Since:
        8.1.0
    • Method Detail

      • valueOf

        public String valueOf​(String xpath,
                              Node context)
        Description copied from interface: IXPath
        Returns the string representation of the evaluated XPath in the given context.
        Specified by:
        valueOf in interface IXPath
        Parameters:
        xpath - the XPath expression.
        context - the context node.
        Returns:
        the string representation of the evaluated XPath in the given context.
      • selectNodes

        public List<Node> selectNodes​(String xpath,
                                      Node context)
        Description copied from interface: IXPath
        Returns a node list with the selected nodes by the given XPath in the given context.
        Specified by:
        selectNodes in interface IXPath
        Parameters:
        xpath - the XPath expression.
        context - the context node.
        Returns:
        a node list with the selected nodes by the given XPath.
      • selectNodes

        public List<Node> selectNodes​(String xpath)
        Description copied from interface: IXPath
        Returns a node list with the selected nodes by the given XPath using the document in context.
        Specified by:
        selectNodes in interface IXPath
        Parameters:
        xpath - the XPath expression.
        Returns:
        a node list with the selected nodes by the given XPath.
      • selectSingleNode

        public Node selectSingleNode​(String xpath,
                                     Node context)
        Description copied from interface: IXPath
        Returns a single node selected by the given XPath expression in the given context. If more than one node is selected, the first one is returned. If there's no such node, null is returned.
        Specified by:
        selectSingleNode in interface IXPath
        Parameters:
        xpath - the XPath expression.
        context - the context node.
        Returns:
        a single node selected by the given XPath expression
      • selectSingleNode

        public Node selectSingleNode​(String xpath)
        Description copied from interface: IXPath
        Returns a single node selected by the given XPath expression using the document in context. If more than one node is selected, the first one is returned. If there's no such node, null is returned.
        Specified by:
        selectSingleNode in interface IXPath
        Parameters:
        xpath - the XPath expression.
        Returns:
        a single node selected by the given XPath expression
      • toMap

        public Map<String,​Object> toMap​(Node node)
        Description copied from interface: IXPath
        Returns a Map object based on the given node.

        The conversion rules are as follows:

        Elements
        A XML element node will behave depending on its nature.
        If the element node is a simple element node, then its value will become available under the node name.
        For example, the given XML node:
        <myNode>Some text<![CDATA[other text]]>another text</myNode> If the node is referenced like var myValue = myMap.myNode;, the variable myValue will have the value Some textother textanother text.
        It is important to notice that no white space will be automatically included between text and CDATA nodes.

        If the element node is a simple element node with attributes, then its value will become available under the $ object, inside the node object.
        For example, the given XML node:

        <myNode myAttribute="1">Some text<![CDATA[other text]]>another text</myNode> If the node is referenced like var myValue = myMap.myNode.$;, the variable myValue will have the value Some textother textanother text.
        It is important to notice that no white space will be automatically included between text and CDATA nodes.

        If the node is a complex node then its text (inner CDATA sections and text nodes) will not be accessible. This kind of node is simply a container for inner nodes.
        For example, the given XML node:

        <myNode>Some text<![CDATA[other text]]>another text<myOtherNode>Other node text</myOtherNode></myNode> The text of node myNode will not be accessible at all and the text of node myOtherNode will be accessible using myMap.myNode.myOtherNode.

        Another aspect of element nodes is when they are automatically wrapped in arrays. It happens in the following situations:

        • If some element node has at least one sibling node with the very same name.
        • If an element node has the attribute lumIsArray with the value true.
        • If the parent node of some element node has a name that is the concatenation of the child node with the "s" suffix and the child element node either doesn't have the lumIsArray attribute or the value of lumIsArray attribute is not false.
        • If the element node has the name row and its parent node name is data and the child element node either doesn't have the lumIsArray attribute or the value of lumIsArray attribute is not false.
        Attributes
        A XML element node attribute named myAttribute becomes available using the name $myAttribute. For example, the given XML node:
        <myNode myAttribute="someValue"/> Makes the attribute myAttribute available using myNode.$myAttribute.

        Simple element node
        Simple element node is a node that has the following aspects:
        Simple element node with attributes
        Simple element node with attributes is a node that has the following aspects:
        Simple element node value
        The value of a simple element node is the concatenation of all inner CDATA sections and text nodes.
        Complex node
        A complex node is a node that has at least one inner node that is neither a CDATA section nor a text node.
        Specified by:
        toMap in interface IXPath
        Parameters:
        node - the node to be transformed in Map.
        Returns:
        a object based on the given node.
      • getMap

        public Map<String,​Object> getMap​(String xpath,
                                               Node context)
        Description copied from interface: IXPath
        Selects a node with the given XPath and converts it to a Map, by using IXPath.toMap(Node). If no node could be resolved with the given XPath, null will be returned.
        Specified by:
        getMap in interface IXPath
        Parameters:
        xpath - the XPath.
        context - the context the given XPath is resolved from.
        Returns:
        the found node's map representation or null if no node matches the given XPath.
      • getMap

        public Map<String,​Object> getMap​(String xpath)
        Description copied from interface: IXPath
        Selects a node with the given XPath and converts it to a Map, by using IXPath.toMap(Node). If no node could be resolved with the given XPath, null will be returned.
        Specified by:
        getMap in interface IXPath
        Parameters:
        xpath - the XPath.
        Returns:
        the found node's map representation or null if no node matches the given XPath.
      • getMaps

        public List<Map<String,​Object>> getMaps​(String xpath,
                                                      Node context)
        Description copied from interface: IXPath
        Selects nodes with the given XPath and converts them to a List of Map, by using IXPath.toMap(Node) in each of these nodes. If no node could be resolved with the given XPath, an empty list will be returned.
        Specified by:
        getMaps in interface IXPath
        Parameters:
        xpath - the XPath.
        context - the context the given XPath is resolved from.
        Returns:
        the found nodes' list of maps representation.
      • getMaps

        public List<Map<String,​Object>> getMaps​(String xpath)
        Description copied from interface: IXPath
        Selects nodes with the given XPath and converts them to a List of Map, by using IXPath.toMap(Node) in each of these nodes. If no node could be resolved with the given XPath, an empty list will be returned.
        Specified by:
        getMaps in interface IXPath
        Parameters:
        xpath - the XPath.
        Returns:
        the found nodes' list of maps representation.