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;