Class Path


  • public class Path
    extends java.lang.Object
    Represents a path to a single node in the tree.

    Two absolute paths can also be compared to calculate the relative path between them. A relative path can be applied to an absolute path to calculate another absolute path.

    Note that the paths are normally XPath compliant, so can be read by other XPath engines. However, toString() will select a node list while explicit() will always select an individual node. If the return type of the XPath evaluation is a node, the result will be the same, because XPath will then use the first element of the list. The following are examples of path expressions that the Path object supports:

    Note that the implementation does not take care if the paths are XPath compliant, it simply manages the values between the path separator. However, it normalizes the path if a path element ends with a selector for the first element (i.e. "[1]"). Those will be handled transparent i.e. two Paths are treated equal if one was created with path elements containing this selector and the other one without.

    The following are examples of path expressions that the Path object supports:

    • /
    • /some/node
    • /a/b/c/b/a
    • /a/b[1]/c[1]/b[1]/a[1]
    • /some[3]/node[2]/a
    • ../../../another[3]/node

    Example

     Path a = new Path("/html/body/div[1]/table[2]/tr[3]/td/div");
     Path b = new Path("/html/body/div/table[2]/tr[6]/td/form");
    
     Path relativePath = a.relativeTo(b); // produces: "../../../tr[6]/td/form"
     Path c = a.apply(relativePath); // same as Path b.
     
    See Also:
    PathTracker
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.String[] chunks  
      private static Path DOT  
      private java.lang.String pathAsString  
      private java.lang.String pathExplicit  
    • Constructor Summary

      Constructors 
      Constructor Description
      Path​(java.lang.String pathAsString)  
      Path​(java.lang.String[] chunks)  
    • Field Detail

      • chunks

        private final java.lang.String[] chunks
      • pathAsString

        private transient java.lang.String pathAsString
      • pathExplicit

        private transient java.lang.String pathExplicit
      • DOT

        private static final Path DOT
    • Constructor Detail

      • Path

        public Path​(java.lang.String pathAsString)
      • Path

        public Path​(java.lang.String[] chunks)
    • Method Detail

      • normalize

        private java.lang.String normalize​(java.lang.String s,
                                           int start,
                                           int end)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • explicit

        public java.lang.String explicit()
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • relativeTo

        public Path relativeTo​(Path that)
      • depthOfPathDivergence

        private int depthOfPathDivergence​(java.lang.String[] path1,
                                          java.lang.String[] path2)
      • apply

        public Path apply​(Path relativePath)
      • isAncestor

        public boolean isAncestor​(Path child)