| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
Bio::Phylo::NeXML::DOM::Document::Libxml - XML DOM document mappings to the
XML::LibXML package
Don't use directly; use Bio::Phylo::NeXML::DOM->new( -format => 'libxml' ) instead.
This module provides mappings the methods specified in the
Bio::Phylo::NeXML::DOM::Document abstract class to the XML::LibXML::Document
package.
Mark A. Jensen ( maj -at- fortinbras -dot- us )
Type : Constructor Title : new Usage : $doc = Bio::Phylo::NeXML::DOM::Document->new(@args) Function: Create a Document object using the underlying package Returns : Document object or undef on fail Args : Package-specific arguments
Type : Factory method Title : parse_document Usage : $doc = $dom->parse_document($text) Function: Create a new XML DOM document from XML text Returns : DOM document Args : An XML String
Type : Mutator Title : set_encoding Usage : $doc->set_encoding($enc) Function: Set encoding for document Returns : True on success Args : Encoding descriptor as string
Type : Accessor Title : get_encoding Usage : $doc->get_encoding() Function: Get encoding for document Returns : Encoding descriptor as string Args : none
Type : Mutator Title : set_root Usage : $doc->set_root($elt) Function: Set the document's root element Returns : True on success Args : Element object
Type : Accessor Title : get_root Usage : $doc->get_root() Function: Get the document's root element Returns : Element object or undef if DNE Args : none
Type : Accessor Title : get_element_by_id Usage : $doc->get_element_by_id($id) Function: Get element having id $id Returns : Element object or undef if DNE Args : id designator as string
Type : Accessor Title : get_elements_by_tagname Usage : $elt->get_elements_by_tagname($tagname) Function: Get array of elements having given tag name Returns : Array of elements or undef if no match Args : tag name as string
Type : Serializer Title : to_xml Usage : $doc->to_xml Function: Create XML string from document Returns : XML string Args : Formatting arguments as allowed by underlying package
If you use Bio::Phylo in published research, please cite it:
Rutger A Vos, Jason Caravas, Klaas Hartmann, Mark A Jensen and Chase Miller, 2011. Bio::Phylo - phyloinformatic analysis using Perl. BMC Bioinformatics 12:63. http://dx.doi.org/10.1186/1471-2105-12-63
| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
# $Id: Libxml.pm 1660 2011-04-02 18:29:40Z rvos $
package Bio::Phylo::NeXML::DOM::Document::Libxml; use strict; use Bio::Phylo::Util::Exceptions 'throw'; use Bio::Phylo::Util::Dependency 'XML::LibXML'; use Bio::Phylo::Util::CONSTANT 'looks_like_instance'; use Bio::Phylo::NeXML::DOM::Element::Libxml (); # for blessing use base qw'Bio::Phylo::NeXML::DOM::Document XML::LibXML::Document';
sub new { my ( $class, @args ) = @_; my $self = XML::LibXML::Document->new(@args); bless $self, $class; return $self; }
sub parse_document { my ( $class, $text ) = @_; my $dom = XML::LibXML->load_xml($text); bless $dom, $class; return $dom; }
sub set_encoding { return shift->setEncoding(shift); }
sub get_encoding { return shift->encoding; }
sub set_root { my ( $self, $root ) = @_; if ( looks_like_instance $root, 'XML::LibXML::Element' ) { $self->setDocumentElement($root); return 1; } else { throw 'ObjectMismatch' => "Argument is not an XML::LibXML::Element"; } }
sub get_root { return shift->documentElement; }
# the XML::LibXML::Document::get_element_by_id() retrieves only # via @xml:id attributes in a general XML file. This is a kludge # using an XPath expression to find an unqualified id attribute # that matches. sub get_element_by_id { my ( $self, $id ) = @_; unless ($id) { throw 'BadArgs' => "Argument 'id' required"; } my $xp = "//*[\@id = '$id']"; my $e = $self->get_root->find($xp); return unless $e; # don't return undef explicitly, do it this way $e = $e->shift; return bless $e, 'Bio::Phylo::NeXML::DOM::Element::Libxml'; }
sub get_elements_by_tagname { my ( $self, $tagname, @args ) = @_; my @a = $self->getElementsByTagName($tagname); bless( $_, 'Bio::Phylo::NeXML::DOM::Element::Libxml' ) for (@a); return @a; }
sub to_xml { my ( $self, @args ) = @_; return $self->toString(@args); }
1;