---
name: "XML::Grove::Path"
section: "3pm"
platform: "linux"
package: "libxml-grove-perl"
version: "0.46alpha-14"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/XML::Grove::Path"
---

# XML::Grove::Path(3pm)

return the object at a path

## NAME

XML::Grove::Path - return the object at a path

## SYNOPSIS

```
 use XML::Grove::Path;
 # Using at_path method on XML::Grove::Document or XML::Grove::Element:
 $xml_obj = $grove_object->at_path("/some/path");
 # Using an XML::Grove::Path instance:
 $pather = XML::Grove::Path->new();
 $xml_obj = $pather->at_path($grove_object);
```

## DESCRIPTION

`"XML::Grove::Path"` returns XML objects located at paths.  Paths are strings of element names or XML object types separated by slash ("/") characters.  Paths must always start at the grove object passed to \``"at_path()"`'.  `"XML::Grove::Path"` is **not** XPath, but it should become obsolete when an XPath implementation is available.

Paths are like URLs

```
    /html/body/ul/li[4]
    /html/body/#pi[2]
```

The path segments can be element names or object types, the objects types are named using:

```
    #element
    #pi
    #comment
    #text
    #cdata
    #any
```

The \``"#any"`' object type matches any type of object, it is essentially an index into the contents of the parent object.

The \``"#text"`' object type treats text objects as if they are not normalized.  Two consecutive text objects are separate text objects.

## AUTHOR

Ken MacLeod, ken@bitsko.slc.ut.us

## SEE ALSO

[**perl**(1)](/perl/1.md), **XML::Grove**(3)

Extensible Markup Language (XML) \<http://www.w3c.org/XML\>
