---
name: "XML::Parser::Lite::Tree"
section: "3pm"
platform: "linux"
package: "libxml-parser-lite-tree-perl"
version: "0.14-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/XML::Parser::Lite::Tree"
---

# XML::Parser::Lite::Tree(3pm)

Lightweight XML tree builder

## NAME

XML::Parser::Lite::Tree - Lightweight XML tree builder

## SYNOPSIS

```
  use XML::Parser::Lite::Tree;
  my $tree_parser = XML::Parser::Lite::Tree::instance();
  my $tree = $tree_parser->parse($xml_data);
    OR
  my $tree = XML::Parser::Lite::Tree::instance()->parse($xml_data);
```

## DESCRIPTION

This is a singleton class for parsing XML into a tree structure. How does this differ from other XML tree generators? By using XML::Parser::Lite, which is a pure perl XML parser. Using this module you can tree-ify simple XML without having to compile any C.

For example, the following XML:

```
  <foo woo="yay"><bar a="b" c="d" />hoopla</foo>
```

Parses into the following tree:

```
        {
          'children' => [
                          {
                            'children' => [
                                            {
                                              'children' => [],
                                              'attributes' => {
                                                                'a' => 'b',
                                                                'c' => 'd'
                                                              },
                                              'type' => 'element',
                                              'name' => 'bar'
                                            },
                                            {
                                              'content' => 'hoopla',
                                              'type' => 'text'
                                            }
                                          ],
                            'attributes' => {
                                              'woo' => 'yay'
                                            },
                            'type' => 'element',
                            'name' => 'foo'
                          }
                        ],
          'type' => 'root'
        };
```

Each node contains a `"type"` key, one of `"root"`, `"element"` and `"text"`. `"root"` is the  document root, and only contains an array ref `"children"`. `"element"` represents a normal tag, and contains an array ref `"children"`, a hash ref `"attributes"` and a string `"name"`. `"text"` nodes contain only a `"content"` string.

## METHODS

- "instance()"

  Returns an instance of the tree parser.

- "new( options... )"

  Creates a new parser. Valid options include `"process_ns"` to process namespaces.

- "parse($xml)"

  Parses the xml in `$xml` and returns the tree as a hash ref.

## AUTHOR

Copyright (C) 2004-2008, Cal Henderson, \<cal@iamcal.com\>

## SEE ALSO

XML::Parser::Lite.
