File: README

package info (click to toggle)
libxml-struct-perl 0.27-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 220 kB
  • sloc: perl: 600; xml: 17; sh: 6; makefile: 2
file content (150 lines) | stat: -rw-r--r-- 4,606 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
NAME

    XML-Struct - Represent XML as data structure preserving element order

SYNOPSIS

        use XML::Struct qw(readXML writeXML simpleXML);
    
        my $xml = readXML( "input.xml" );
        # [ root => { xmlns => 'http://example.org/' }, [ '!', [ x => {}, [42] ] ] ]
    
        my $doc = writeXML( $xml );
        # <?xml version="1.0" encoding="UTF-8"?>
        # <root xmlns="http://example.org/">!<x>42</x></root>
    
        my $simple = simpleXML( $xml, root => 'record' );
        # { record => { xmlns => 'http://example.org/', x => 42 } }

DESCRIPTION

    XML::Struct implements a mapping between XML and Perl data structures.
    By default, the mapping preserves element order, so it also suits for
    "document-oriented" XML. In short, an XML element is represented as
    array reference with three parts:

       [ $name => \%attributes, \@children ]

    This data structure corresponds to the abstract data model of MicroXML
    <http://www.w3.org/community/microxml/>, a simplified subset of XML.

    If your XML documents don't contain relevant attributes, you can also
    choose to map to this format:

       [ $name => \@children ]   # element without attributes
       [ $name ]                 # empty tag without attributes

    Both parsing (with XML::Struct::Reader or function readXML) and
    serializing (with XML::Struct::Writer or function writeXML) are fully
    based on XML::LibXML, so performance is better than XML::Simple and
    similar to XML::LibXML::Simple.

MODULES

    XML::Struct::Reader

      Parse XML as stream into XML data structures.

    XML::Struct::Writer

      Write XML data structures to XML streams for serializing, SAX
      processing, or creating a DOM object.

    XML::Struct::Writer::Stream

      Simplified SAX handler for XML serialization.

    XML::Struct::Simple

      Transform XML data structure into simple form.

FUNCTIONS

    The following functions are exported on request:

 readXML( $source [, %options ] )

    Read an XML document with XML::Struct::Reader. The type of source
    (string, filename, URL, IO Handle...) is detected automatically. See
    XML::Struct::Reader for options. Options not known to
    XML::Struct::Reader are passed to XML::LibXML::Reader.

 writeXML( $xml [, %options ] )

    Write an XML document/element with XML::Struct::Writer. See
    XML::Struct::Writer for options.

 simpleXML( $element [, %options ] )

    Transform an XML document/element into simple key-value format as known
    from XML::Simple. See XML::Struct::Simple for options.

 removeXMLAttr( $element )

    Transform XML structure with attributes to XML structure without
    attributes. The function does not modify the passed element but creates
    a modified copy.

    this function is deprecated and will be removed in a future release!

EXAMPLE

    To give an example, with XML::Struct::Reader, this XML document:

        <root>
          <foo>text</foo>
          <bar key="value">
            text
            <doz/>
          </bar>
        </root>

    is transformed to this structure:

        [
          "root", { }, [
            [ "foo", { }, "text" ],
            [ "bar", { key => "value" }, [
              "text", 
              [ "doz", { }, [ ] ]
            ] 
          ]
        ]

    This module also supports a simple key-value (aka "data-oriented")
    format, as used by XML::Simple. With option simple (or function
    simpleXML) the document given above would be transformed to this
    structure:

        {
            foo => "text",
            bar => {
                key => "value",
                doz => {}
            }
        }

SEE ALSO

    This module was first created to be used in Catmandu::XML and turned
    out to also become a replacement for XML::Simple. See the former for
    more XML processing.

    XML::Twig is another popular and powerfull module for stream-based
    processing of XML documents.

    See XML::Smart, XML::Hash::LX, XML::Parser::Style::ETree, XML::Fast,
    and XML::Structured for different representations of XML data as data
    structures (feel free to implement converters from/to XML::Struct).
    XML::GenericJSON seems to be an outdated and incomplete attempt to
    capture more parts of XML Infoset in another data structure.

    See JSONx for a kind of reverse direction (JSON in XML).

COPYRIGHT AND LICENSE

    This software is copyright (c) 2014 by Jakob Voß.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.