---
name: "Catmandu::Importer::XML"
section: "3pm"
platform: "linux"
package: "libcatmandu-xml-perl"
version: "0.17-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Importer::XML"
---

# Catmandu::Importer::XML(3pm)

Import serialized XML documents

## NAME

Catmandu::Importer::XML - Import serialized XML documents

## DESCRIPTION

This Catmandu::Importer reads XML and transforms it into a data structure.

See Catmandu::Importer, Catmandu::Iterable, Catmandu::Logger and Catmandu::Fixable for methods and options derived from these modules.

The importer can also be used internally for custom importers that need to parse XML data.

## CONFIGURATION

- type

  By default (type "`"simple"`"), elements and attributes and converted to keys in a key-value structure. For instance this document:

  ```
      <doc attr="value">
        <field1>foo</field1>
        <field1>bar</field1>
        <bar>
          <doz>baz</doz>
        </bar>
      </doc>
  ```

  is imported as

  ```
      {
          attr => 'value',
          field1 => [ 'foo', 'bar' ],
          field2 => { 'doz' => 'baz' },
      }
  ```

  With type "`"ordered"`" elements are preserved in the order of their appereance. For instance the sample document above is imported as:

  ```
      [
          doc => { attr => "value" }, [
              [ field1 => { }, ["foo"] ],
              [ field1 => { },  ["bar"] ],
              [ field2 => { }, [ [ doz => { }, ["baz"] ] ] ]
          ]
      ]
  ```

- depth

  Maximum depth for type "`"simple"`". For instance with depth 1, the sample document above would be imported as:

  ```
      {
          attr => 'value',
          field1 => [ 'foo', 'bar' ],
          field2 => {
              doz => [ [ doz => { }, ["baz"] ] ]
          }
      }
  ```

- attributes

  Include XML attributes. Enabled by default.

- path

  Path expression to select XML elements. If not set the root element is selected.

- root

  Include root element name for type `"simple"`. Disabled by default.  The option is ignored if type is not `"simple"` or if a `"path"` has explicitly been set.

- ns

  Set to `"strip"` for stripping namespace prefixes and xmlns-attributes.

- whitespace

  Include ignoreable whitespace. Disabled by default.

- xslt

  Optional (list of) XSLT stylesheets to process records with Catmandu::XML::Transformer.

- transform

  Deprecated alias for option `"xslt"`.

## SEE ALSO

This module is just a thin layer on top of XML::Struct::Reader. Have a look at XML::Struct to implement Importers and Exporters for more specific XML-based data formats.
