NAME

Tags::Output::LibXML - Printing 'Tags' structure by LibXML library.

SYNOPSIS

use Tags::Output::LibXML;

my $tags = Tags::Output::LibXML->new(%parameters);
$tags->put(['b', 'element']);
my @open_tags = $tags->open_tags;
$tags->finalize;
$tags->flush($reset_flag);
$tags->reset;

DESCRIPTION

This class is only for XML structures.

METHODS

new(%parameters)
Constructor.
  • cdata_callback

    Subroutine for output processing of cdata.
    Input argument is reference to array.
    Default value is undef.
    Example is similar as 'data_callback'.
  • data_callback

    Subroutine for output processing of data, cdata and raw data.
    Input argument is reference to array.
    Default value is undef.
    
    Example:
    'data_callback' => sub {
            my $data_ar = shift;
            foreach my $data (@{$data_ar}) {
    
                    # Some process.
                    $data =~ s/^\s*//ms;
            }
    }
  • encoding

    Encoding for XML header.
    Default is 'UTF-8'.
  • no_simple

    TODO not implemented.
    Reference to array of tags, that can't by simple.
    Default is [].
  • output_handler

    Handler for print output strings.
    Must be a GLOB.
    Default is undef.
  • preserved

    TODO not implemented.
    Default value is reference to blank array.
  • set_indent

    Set indent flag.
    Default is 0.
  • skip_bad_tags

    Skip bad tags.
    Default value is 0.
  • xml_version

    XML version for XML header.
    Default is "1.1".
finalize()
Finalize Tags output.
Automaticly puts end of all opened tags.
Returns undef.
flush($reset_flag)
Flush tags in object.
If defined 'output_handler' flush to its.
Or return code.
If enabled $reset_flag, then resets internal variables via reset method. 
open_tags()
Return array of opened tags.
put(@data)
Put tags code in tags format.
Returns undef.
reset()
Resets internal variables.
Returns undef.

ERRORS

TODO

EXAMPLE1

use strict;
use warnings;

use Tags::Output::LibXML;

# Object.
my $tags = Tags::Output::LibXML->new;

# Put data.
$tags->put(
        ['b', 'text'],
        ['d', 'data'],
        ['e', 'text'],
);

# Print.
print $tags->flush."\n";

# Output:
# <?xml version="1.1" encoding="UTF-8"?>
# <text>data</text>

EXAMPLE2

use strict;
use warnings;

use Encode;
use Tags::Output::LibXML;

# Object.
my $tags = Tags::Output::LibXML->new(
        'data_callback' => sub {
                my $data_ar = shift;
                foreach my $data (@{$data_ar}) {
                        $data = encode_utf8($data);
                }
                return;
        },
);

# Data in characters.
my $data = decode_utf8('řčěšřšč');

# Put data.
$tags->put(
        ['b', 'text'],
        ['d', $data],
        ['e', 'text'],
);

# Print.
print $tags->flush."\n";

# Output:
# <?xml version="1.1" encoding="UTF-8"?>
# <text>řčěšřšč</text>

DEPENDENCIES

Error::Pure, Readonly, Tags::Output, XML::LibXML.

SEE ALSO

Tags

Structure oriented SGML/XML/HTML/etc. elements manipulation.

Tags::Output

Base class for Tags::Output::*.

Task::Tags

Install the Tags modules.

REPOSITORY

https://github.com/michal-josef-spacek/Tags-Output-LibXML

AUTHOR

Michal Josef Špaček skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2011-2026 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.04