groovy.util.slurpersupport

## Class GPathResult

- java.lang.Object
- - groovy.lang.GroovyObjectSupport
  - - groovy.util.slurpersupport.GPathResult

- All Implemented Interfaces:
    Buildable, GroovyObject, Writable, java.lang.Iterable
  Direct Known Subclasses:
    Attribute, NoChildren, NodeChild, NodeChildren

      public abstract class GPathResult
      extends GroovyObjectSupport
      implements Writable, Buildable, java.lang.Iterable

  Base class for representing lazy evaluated GPath expressions.
  Author:
    John Wilson

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.String` | `name`
    `protected java.util.Map` | `namespaceMap`
    `protected java.lang.String` | `namespacePrefix`
    `protected java.util.Map<java.lang.String,java.lang.String>` | `namespaceTagHints`
    `protected GPathResult` | `parent`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GPathResult(GPathResult parent, java.lang.String name, java.lang.String namespacePrefix, java.util.Map<java.lang.String,java.lang.String> namespaceTagHints)` Creates a new GPathResult named `name` with the parent `parent`, the namespacePrefix `namespacePrefix` and the namespaceTagHints specified in the `namespaceTagHints` Map.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract void` | `appendNode(java.lang.Object newValue)`
    `java.util.Iterator` | `breadthFirst()` Provides an Iterator over all the nodes of this GPathResult using a breadth-first traversal.
    `abstract java.util.Iterator` | `childNodes()` Returns an iterator over the child nodes of this GPathResult.
    `GPathResult` | `children()` Returns the children of this GPathResult as a GPathResult object.
    `GPathResult` | `declareNamespace(java.util.Map newNamespaceMapping)` Adds the specified map of prefix to namespace mappings to this GPathResult.
    `java.util.Iterator` | `depthFirst()` Provides an Iterator over all the nodes of this GPathResult using a depth-first traversal.
    `boolean` | `equals(java.lang.Object obj)`
    `abstract GPathResult` | `find(Closure closure)` Returns the first child of this GPathResult matching the condition(s) specified in the passed closure.
    `abstract GPathResult` | `findAll(Closure closure)` Returns the children of this GPathResult matching the condition(s) specified in the passed closure.
    `java.lang.Object` | `getAt(int index)` Supports the subscript operator for a GPathResult.
    `java.lang.Object` | `getAt(IntRange range)` Supports the range subscript operator for a GPathResult.
    `Closure` | `getBody()` Creates a Closure representing the body of this GPathResult.
    `java.lang.Object` | `getProperty(java.lang.String property)` Returns the specified Property of this GPathResult.
    `int` | `hashCode()`
    `boolean` | `isEmpty()` Returns true if the GPathResult is empty, i.e.
    `abstract java.util.Iterator` | `iterator()`
    `java.lang.Object` | `leftShift(java.lang.Object newValue)` Overloads the left shift operator to provide an easy way to lazily append Objects to this GPathResult.
    `java.util.List` | `list()` Creates a list of objects representing this GPathResult.
    `java.lang.String` | `lookupNamespace(java.lang.String prefix)` Returns the namespace mapped to the specified prefix.
    `java.lang.String` | `name()` Returns the name of this GPathResult.
    `abstract java.util.Iterator` | `nodeIterator()`
    `GPathResult` | `parent()` Returns as GPathResult with the parent nodes of the current GPathResult
    `abstract GPathResult` | `parents()` Returns the parents of this GPathResult as a `GPathResult`.
    `java.lang.Object` | `plus(java.lang.Object newValue)` Lazily adds the specified Object to this GPathResult.
    `GPathResult` | `pop()` Returns the parent of this GPathResult.
    `void` | `putAt(int index, java.lang.Object newValue)` A helper method to allow GPathResults to work with subscript operators
    `protected abstract void` | `replaceBody(java.lang.Object newValue)`
    `protected abstract void` | `replaceNode(Closure newValue)`
    `void` | `setMetaClass(MetaClass metaClass)` Replaces the MetaClass of this GPathResult.
    `void` | `setProperty(java.lang.String property, java.lang.Object newValue)` Replaces the specified property of this GPathResult with a new value.
    `abstract int` | `size()` Returns the size of this GPathResult.
    `abstract java.lang.String` | `text()` Returns the text of this GPathResult as a `String`.
    `java.math.BigDecimal` | `toBigDecimal()` Converts the text of this GPathResult to a BigDecimal object.
    `java.math.BigInteger` | `toBigInteger()` Converts the text of this GPathResult to a BigInteger object.
    `java.lang.Boolean` | `toBoolean()` Converts the text of this GPathResult to a Boolean object.
    `java.lang.Double` | `toDouble()` Converts the text of this GPathResult to a Double object.
    `java.lang.Float` | `toFloat()` Converts the text of this GPathResult to a Float object.
    `java.lang.Integer` | `toInteger()` Converts the text of this GPathResult to a Integer object.
    `java.lang.Long` | `toLong()` Converts the text of this GPathResult to a Long object.
    `java.lang.String` | `toString()` Returns the text of this GPathResult.
    `java.net.URI` | `toURI()` Converts the text of this GPathResult to a URI object.
    `java.net.URL` | `toURL()` Converts the text of this GPathResult to a URL object.

    - ### Methods inherited from class groovy.lang.GroovyObjectSupport

      `getMetaClass, invokeMethod`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface groovy.lang.Writable

      `writeTo`

    - ### Methods inherited from interface groovy.lang.Buildable

      `build`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### parent

          protected final GPathResult parent

    - #### name

          protected final java.lang.String name

    - #### namespacePrefix

          protected final java.lang.String namespacePrefix

    - #### namespaceMap

          protected final java.util.Map namespaceMap

    - #### namespaceTagHints

          protected final java.util.Map<java.lang.String,java.lang.String> namespaceTagHints

  - ### Constructor Detail

    - #### GPathResult

          public GPathResult(GPathResult parent,
                             java.lang.String name,
                             java.lang.String namespacePrefix,
                             java.util.Map<java.lang.String,java.lang.String> namespaceTagHints)

      Creates a new GPathResult named `name` with the parent `parent`, the namespacePrefix `namespacePrefix` and the namespaceTagHints specified in the `namespaceTagHints` Map.
      Parameters:
        `parent` - the GPathResult prior to the application of the expression creating this GPathResult
        `name` - if the GPathResult corresponds to something with a name, e.g. a node
        `namespacePrefix` - the namespace prefix if any
        `namespaceTagHints` - the known tag to namespace mappings

  - ### Method Detail

    - #### setMetaClass

          public void setMetaClass(MetaClass metaClass)

      Replaces the MetaClass of this GPathResult.
      Specified by:
        `setMetaClass` in interface `GroovyObject`
      Overrides:
        `setMetaClass` in class `GroovyObjectSupport`
      Parameters:
        `metaClass` - the new MetaClass

    - #### getProperty

          public java.lang.Object getProperty(java.lang.String property)

      Returns the specified Property of this GPathResult.

      Realizes the follow shortcuts:

      - `'..'` for `parent()`
      - `'*'` for `children()`
      - `'**'` for `depthFirst()`
      - `'@'` for attribute access
      Specified by:
        `getProperty` in interface `GroovyObject`
      Overrides:
        `getProperty` in class `GroovyObjectSupport`
      Parameters:
        `property` - the Property to fetch
      Returns:
        the given property

    - #### setProperty

          public void setProperty(java.lang.String property,
                                  java.lang.Object newValue)

      Replaces the specified property of this GPathResult with a new value.
      Specified by:
        `setProperty` in interface `GroovyObject`
      Overrides:
        `setProperty` in class `GroovyObjectSupport`
      Parameters:
        `property` - the property of this GPathResult to replace
        `newValue` - the new value of the property

    - #### leftShift

          public java.lang.Object leftShift(java.lang.Object newValue)

      Overloads the left shift operator to provide an easy way to lazily append Objects to this GPathResult.
      Parameters:
        `newValue` - the Object to append
      Returns:
        `this`

    - #### plus

          public java.lang.Object plus(java.lang.Object newValue)

      Lazily adds the specified Object to this GPathResult.
      Parameters:
        `newValue` - the Object to add
      Returns:
        `this`

    - #### replaceNode

          protected abstract void replaceNode(Closure newValue)

    - #### replaceBody

          protected abstract void replaceBody(java.lang.Object newValue)

    - #### appendNode

          protected abstract void appendNode(java.lang.Object newValue)

    - #### name

          public java.lang.String name()

      Returns the name of this GPathResult.
      Returns:
        the name of this GPathResult

    - #### pop

          public GPathResult pop()

      Returns the parent of this GPathResult. If this GPathResult has no parent the GPathResult itself is returned. This is no navigation in the XML tree. It is backtracking on the GPath expression chain. It is the behavior of parent() prior to 2.2.0. Backtracking on '..' actually goes down one level in the tree again. find() and findAll() are popped along with the level they have been applied to.
      Returns:
        the parent or `this`

    - #### parent

          public GPathResult parent()

      Returns as GPathResult with the parent nodes of the current GPathResult
      Returns:
        the parents GPathResult or `this` for the root

    - #### children

          public GPathResult children()

      Returns the children of this GPathResult as a GPathResult object.
      Returns:
        the children of this GPathResult

    - #### lookupNamespace

          public java.lang.String lookupNamespace(java.lang.String prefix)

      Returns the namespace mapped to the specified prefix.
      Parameters:
        `prefix` - the prefix lookup
      Returns:
        the namespace of the prefix

    - #### toString

          public java.lang.String toString()

      Returns the text of this GPathResult.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the GPathResult, converted to a `String`

    - #### toInteger

          public java.lang.Integer toInteger()

      Converts the text of this GPathResult to a Integer object.
      Returns:
        the GPathResult, converted to a `Integer`

    - #### toLong

          public java.lang.Long toLong()

      Converts the text of this GPathResult to a Long object.
      Returns:
        the GPathResult, converted to a `Long`

    - #### toFloat

          public java.lang.Float toFloat()

      Converts the text of this GPathResult to a Float object.
      Returns:
        the GPathResult, converted to a `Float`

    - #### toDouble

          public java.lang.Double toDouble()

      Converts the text of this GPathResult to a Double object.
      Returns:
        the GPathResult, converted to a `Double`

    - #### toBigDecimal

          public java.math.BigDecimal toBigDecimal()

      Converts the text of this GPathResult to a BigDecimal object.
      Returns:
        the GPathResult, converted to a `BigDecimal`

    - #### toBigInteger

          public java.math.BigInteger toBigInteger()

      Converts the text of this GPathResult to a BigInteger object.
      Returns:
        the GPathResult, converted to a `BigInteger`

    - #### toURL

          public java.net.URL toURL()
                             throws java.net.MalformedURLException

      Converts the text of this GPathResult to a URL object.
      Returns:
        the GPathResult, converted to a `URL`
      Throws:
        `java.net.MalformedURLException`

    - #### toURI

          public java.net.URI toURI()
                             throws java.net.URISyntaxException

      Converts the text of this GPathResult to a URI object.
      Returns:
        the GPathResult, converted to a `URI`
      Throws:
        `java.net.URISyntaxException`

    - #### toBoolean

          public java.lang.Boolean toBoolean()

      Converts the text of this GPathResult to a Boolean object.
      Returns:
        the GPathResult, converted to a `Boolean`

    - #### declareNamespace

          public GPathResult declareNamespace(java.util.Map newNamespaceMapping)

      Adds the specified map of prefix to namespace mappings to this GPathResult. Already existing prefixes are overwritten.
      Parameters:
        `newNamespaceMapping` - the mappings to add
      Returns:
        `this`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### getAt

          public java.lang.Object getAt(int index)

      Supports the subscript operator for a GPathResult.

           import groovy.util.slurpersupport.*
           def text = """
           <characterList>
             <character/>
             <character>
               <name>Gromit</name>
             </character>
           </characterList>"""

           GPathResult characterList = new XmlSlurper().parseText(text)

           assert characterList.character[1].name == 'Gromit'

      Parameters:
        `index` - an index
      Returns:
        the value at the given index

    - #### getAt

          public java.lang.Object getAt(IntRange range)

      Supports the range subscript operator for a GPathResult.

           import groovy.util.slurpersupport.*
           def text = """
           <characterList>
             <character>Wallace</character>
             <character>Gromit</character>
             <character>Shaun</character>
           </characterList>"""

           GPathResult characterList = new XmlSlurper().parseText(text)

           assert characterList.character[1..2].join(',') == 'Gromit,Shaun'

      Parameters:
        `range` - a Range indicating the items to get
      Returns:
        a new list based on range borders

    - #### putAt

          public void putAt(int index,
                            java.lang.Object newValue)

      A helper method to allow GPathResults to work with subscript operators
      Parameters:
        `index` - an index
        `newValue` - the value to put at the given index

    - #### depthFirst

          public java.util.Iterator depthFirst()

      Provides an Iterator over all the nodes of this GPathResult using a depth-first traversal.
      Returns:
        the `Iterator` of (depth-first) ordered GPathResults

    - #### breadthFirst

          public java.util.Iterator breadthFirst()

      Provides an Iterator over all the nodes of this GPathResult using a breadth-first traversal.
      Returns:
        the `Iterator` of (breadth-first) ordered GPathResults

    - #### list

          public java.util.List list()

      Creates a list of objects representing this GPathResult.
      Returns:
        a list representing of this GPathResult

    - #### isEmpty

          public boolean isEmpty()

      Returns true if the GPathResult is empty, i.e. if, and only if, `size()` is 0.
      Returns:
        true if the GPathResult is empty

    - #### getBody

          public Closure getBody()

      Creates a Closure representing the body of this GPathResult.
      Returns:
        the body of this GPathResult, converted to a `Closure`

    - #### size

          public abstract int size()

      Returns the size of this GPathResult.
      Returns:
        the size of this GPathResult

    - #### text

          public abstract java.lang.String text()

      Returns the text of this GPathResult as a `String`.
      Returns:
        the text of this GPathResult

    - #### parents

          public abstract GPathResult parents()

      Returns the parents of this GPathResult as a `GPathResult`. Warning: The subclasses of this package do not implement this method yet.
      Returns:
        the parents of this GPathResult

    - #### childNodes

          public abstract java.util.Iterator childNodes()

      Returns an iterator over the child nodes of this GPathResult.
      Returns:
        an iterator over the child nodes of this GPathResult

    - #### iterator

          public abstract java.util.Iterator iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable`

    - #### find

          public abstract GPathResult find(Closure closure)

      Returns the first child of this GPathResult matching the condition(s) specified in the passed closure.
      Parameters:
        `closure` - a closure to filters the children of this GPathResult
      Returns:
        the first child matching the closure

    - #### findAll

          public abstract GPathResult findAll(Closure closure)

      Returns the children of this GPathResult matching the condition(s) specified in the passed closure.
      Parameters:
        `closure` - a closure to filters the children of this GPathResult
      Returns:
        the children matching the closure

    - #### nodeIterator

          public abstract java.util.Iterator nodeIterator()