NAME

XML::Chain - chained way of manipulating and inspecting XML documents

SYNOPSIS

use XML::Chain qw(xc);
my $div = xc('div', class => 'pretty')
            ->c('h1')->t('hello')
            ->up
            ->c('p', class => 'intro')->t('world!');
say $div->as_string;
# <div class="pretty"><h1>hello</h1><p class="intro">world!</p></div>

DESCRIPTION

☢ at this moment XML::Chain is in early prototype phase ☢

This module provides fast and easy way to create and manipulate XML elements via set of chained method calls.

EXPORTS

xc

A factory method creating new XML::Chain object with a document element as provided in parameters. For example:

my $icon = xc('i', class => 'icon-download icon-white');
# <i class="icon-download icon-white"/>

See "c, append_and_current" for the element parameter description.

CHAINED METHODS

c, append_and_current

Appends new element to current elements and changes context to them. New element is defined in parameters:

$xc->c('i', class => 'icon-download icon-white')
# <i class="icon-download icon-white"/>

First parameter is name of the element, then followed by optional element attributes.

t, append_text

Appends text to current elements.

xc('span')->t('some')->t(' ')->t('more text')
# <span>some more text</span>

First parameter is name of the element, then followed by optional element attributes.

root

Sets document element as current element.

say xc('p')
    ->t('this ')
    ->c('b')
        ->t('is')->up
    ->t(' important!')
    ->root->as_string;
# <p>this <b>is</b> important!</p>

up, parent

Traverse current elements and replace them by their parents.

METHODS

as_string, toString

Returns string representation of current XML elements. Call root before to get a string representing the whole document.

$xc->as_string
$xc->root->as_string

XML::Chain uses overloading, so string interpolation also works:

my $xc = xc('overload');
say "$xc";
# <overload/>

CONTRIBUTORS

The following people have contributed to the Sys::Path by committing their code, sending patches, reporting bugs, asking questions, suggesting useful advice, nitpicking, chatting on IRC or commenting on my blog (in no particular order):

you?

BUGS

Please report any bugs or feature requests via https://github.com/meon/XML-Chain/issues.

AUTHOR

Jozef Kutej

COPYRIGHT & LICENSE

Copyright 2009 Jozef Kutej, all rights reserved.

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