.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "POE::Filter::XML::Node 3pm" .TH POE::Filter::XML::Node 3pm "2009-04-25" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" POE::Filter::XML::Node \- An enhanced XML::LibXML::Element subclass. .SH "SYNOPSIS" .IX Header "SYNOPSIS" use 5.010; .PP use POE::Filter::XML::Node; .PP my \f(CW$node\fR = POE::Filter::XML::Node\->new('iq'); .PP \&\f(CW$node\fR\->setAttributes( ['to', 'foo@other', 'from', 'bar@other', 'type', 'get'] ); .PP my \f(CW$query\fR = \f(CW$node\fR\->addNewChild('jabber:iq:foo', 'query'); .PP \&\f(CW$query\fR\->appendTextChild('foo_tag', 'bar'); .PP say \f(CW$node\fR\->\fItoString()\fR; .PP \&\-\- .PP (newlines and tabs for example only) .PP .Vb 5 \& \& \& bar \& \& .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" POE::Filter::XML::Node is a XML::LibXML::Element subclass that aims to provide a few extra convenience methods and light integration into a streaming context. .SH "METHODS" .IX Header "METHODS" .IP "stream_start($bool) [public]" 4 .IX Item "stream_start($bool) [public]" \&\fIstream_start()\fR called without arguments returns a bool on whether or not the node in question is the top level document tag. In an xml stream such as \&\s-1XMPP\s0 this is the tag. Called with a single argument (a bool) sets whether this tag should be considered a stream starter. .Sp This method is significant because it determines the behavior of the \fItoString()\fR method. If \fIstream_start()\fR returns bool true, the tag will not be terminated. (ie. instead of ) .IP "stream_end($bool) [public]" 4 .IX Item "stream_end($bool) [public]" \&\fIstream_end()\fR called without arguments returns a bool on whether or not the node in question is the closing document tag in a stream. In an xml stream such as \s-1XMPP\s0, this is the . Called with a single argument (a bool) sets whether this tag should be considered a stream ender. .Sp This method is significant because it determines the behavior of the \fItoString()\fR method. If \fIstream_end()\fR returns bool true, then any data or attributes or children of the node is ignored and an ending tag is constructed. .Sp (ie. instead of ) .IP "setAttributes($array_ref) [public]" 4 .IX Item "setAttributes($array_ref) [public]" \&\fIsetAttributes()\fR accepts a single arguement: an array reference. Basically you pair up all the attributes you want to be into the node (ie. [attrib, value]) and this method will process them using \fIsetAttribute()\fR. This is just a convenience method. .Sp If one of the attributes is 'xmlns', \fIsetNamespace()\fR will be called with the value used as the \f(CW$nsURI\fR argument, with no prefix, and not activated. .Sp .Vb 8 \& eg. \& [\*(Aqxmlns\*(Aq, \*(Aqhttp://foo\*(Aq] \& | \& V \& setNamespace($value, \*(Aq\*(Aq, 0) \& | \& V \& .Ve .IP "\fIgetAttributes()\fR [public]" 4 .IX Item "getAttributes() [public]" This method returns all of the attribute nodes on the Element (filtering out namespace declarations). .IP "\fIgetChildrenHash()\fR [public]" 4 .IX Item "getChildrenHash() [public]" \&\fIgetChildrenHash()\fR returns a hash reference to all the children of that node. Each key in the hash will be node name, and each value will be an array reference with all of the children with that name. Each child will be blessed into POE::Filter::XML::Node. .IP "getSingleChildByTagName($name) [public]" 4 .IX Item "getSingleChildByTagName($name) [public]" This is a convenience method that basically does: (getChildrenByTagName($name))[0] .Sp The returned object will be a POE::Filter::XML::Node object. .IP "new($name,[$array_ref]) [overriden]" 4 .IX Item "new($name,[$array_ref]) [overriden]" The default XML::LibXML::Element constructor is overridden to provide some extra functionality with regards to attributes. If the \f(CW$array_ref\fR argument is defined, it will be passed to \fIsetAttributes()\fR. .Sp Returns a newly constructed POE::Filter::XML::Node. .IP "cloneNode($deep) [overridden]" 4 .IX Item "cloneNode($deep) [overridden]" This method overrides the base \fIcloneNode()\fR to propogate the stream_[start|end] bits on the node being cloned. The \f(CW$deep\fR argument is passed unchanged to the base class. .Sp This returns a POE::Filter::XML::Node object. .IP "appendChild($name|$node,[$array_ref]) [overridden]" 4 .IX Item "appendChild($name|$node,[$array_ref]) [overridden]" Depending on the arguments provided, this method either 1) instantiates a new Node and appends to the subject or 2) appends the provided Node object. An array reference of attributes may also be provided in either case, and if defined, will be passed to \fIsetAttributes()\fR. .IP "toString($formatted) [overridden]" 4 .IX Item "toString($formatted) [overridden]" \&\fItoString()\fR was overridden to provide special stringification semantics for when stream_start and stream_end are boolean true. .SH "FUNCTIONS" .IX Header "FUNCTIONS" .IP "ordain($element) [exported by default]" 4 .IX Item "ordain($element) [exported by default]" Use this exported function to get PFX::Nodes from XML::LibXML::Elements. This is useful for inherited methods that by default return Elements instead of Nodes. .SH "NOTES" .IX Header "NOTES" This Node module is 100% incompatible with previous versions. Do \s-1NOT\s0 assume this will upgrade cleanly. .PP When using XML::LibXML::Element methods, the objects returned will \s-1NOT\s0 be blessed into POE::Filter::XML::Node objects unless those methods are explictly overriden in this module. Use POE::Filter::XML::Node::ordain to overcome this. .SH "AUTHOR" .IX Header "AUTHOR" Copyright (c) 2003 \- 2009 Nicholas Perez. Released and distributed under the \s-1GPL\s0.