—package
XML::Elemental::Element;
use
strict;
sub
new {
my
$self
=
bless
{},
$_
[0];
$self
->{attribute} = {};
$self
->{contents} = [];
return
$self
;
}
sub
text_content {
return
''
unless
defined
$_
[0]->{contents};
return
join
(
''
,
map
{
$_
->can(
'text_content'
) ?
$_
->text_content :
$_
->data }
@{
$_
[0]->contents});
}
sub
name {
$_
[0]->{name} =
$_
[1]
if
@_
> 1;
return
$_
[0]->{name};
}
sub
parent {
$_
[0]->{parent} =
$_
[1]
if
@_
> 1;
return
$_
[0]->{parent};
}
sub
contents {
$_
[0]->{contents} ||= [];
$_
[0]->{contents} =
$_
[1]
if
@_
> 1;
return
$_
[0]->{contents};
}
sub
attributes {
$_
[0]->{attributes} ||= {};
$_
[0]->{attributes} =
$_
[1]
if
@_
> 1;
return
$_
[0]->{attributes};
}
1;
__END__
=begin
=head1 NAME
XML::Elemental::Element - a generic element (tag) object.
=head1 DESCRIPTION
XML::Elemental::Element is a subclass of
L<XML::Elemental::Node> that is used by the Elemental parser
to represent a tag.
=head1 METHODS
=item XML::Elemental::Element->new
Parameterless constructor. Returns an instance of the
object.
=item $element->name([$name])
Returns the tag name as a string in Clarkian notation --
{namespace}tag. See C<process_name> in
L<MT::Elemental::Util> for a routine that can split this
namespace-qualified name into its individual parts. If you
are setting the element name it B<must> be in this same
notation.
=item $element->parent([$element])
Returns a the parent element object. If a object parameter
is passed the parent is set. The object is assumed to be or
have an interface like L<XML::Elemental::Element>.
=item $element->contents([\@children])
Returns an ordered array reference of direct sibling
objects. Returns a reference to an empty array if the
element does not have any siblings. If a parameter is passed
all the direct siblings are (re)set.
=item $element->attributes([\%attributes])
Returns a HASH reference of key-value pairs representing the
tag's attributes. It returns a reference to an empty hash if
the element does not have any attributes. If a parameter is
passed all attributes are (re)set. Like the element name,
keys must be in Clarkian notation.
=item $element->text_content
A method that returns the character data of all siblings as
a string.
=item $element->root
Inherited from L<XML::Elemental::Node>, returns the top most
object ancestor. Typically this will be a
L<XML::Element::Document> object.
=item $element->ancestors
Inherited from L<XML::Elemental::Node>, returns an ordered
array of elements starting with the closest ancestor and
ending with the root.
=item $element->in_element($element)
Inherited from L<XML::Elemental::Node>, this method will
test if the required L<XML::Elemental::Element> parameter is
an ancestor of the current object and return a boolean
value.
=head1 AUTHOR & COPYRIGHT
Please see the XML::Elemental manpage for author, copyright,
and license information.
=cut
=end