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-2020 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.03