package Tree::Template::Declare::LibXML; use strict; use warnings; use Carp; use XML::LibXML; sub new { my ($class)=@_; return bless {},$class; } sub new_tree { my ($self)=@_; return XML::LibXML::Document->new(); } sub finalize_tree { my ($self,$tree)=@_; return $tree; } sub new_node { my ($self)=@_; return XML::LibXML::Element->new(''); } sub add_child_node { my ($self,$parent,$child)=@_; my $doc=$parent->ownerDocument; $child=$doc->adoptNode($child) if $doc; if ($parent->isa('XML::LibXML::Document')) { $parent->setDocumentElement($child); } else { $parent->appendChild($child); } return $parent; } sub set_node_name { my ($self,$node,$name)=@_; return $node->setNodeName($name); } sub set_node_attributes { my ($self,$node,$attrs)=@_; while (my ($name,$val)=each %$attrs) { $node->setAttribute($name, $val); } return; } 1;