++ed by:

2 non-PAUSE users.

Jakob Voß
and 3 contributors

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.