XML-DOM
view release on metacpan or search on metacpan
lib/XML/DOM.pm view on Meta::CPAN
"node is ReadOnly")
if $self->isReadOnly;
substr ($self->[_Data], $offset, $count) = $data;
}
sub setData
{
my ($self, $data) = @_;
croak new XML::DOM::DOMException (NO_MODIFICATION_ALLOWED_ERR,
"node is ReadOnly")
if $self->isReadOnly;
$self->[_Data] = $data;
}
sub substringData
{
my ($self, $offset, $count) = @_;
my $data = $self->[_Data];
croak new XML::DOM::DOMException (INDEX_SIZE_ERR,
"bad offset [$offset]")
if ($offset < 0 || $offset >= length ($data));
#?? DOM Spec says >, but >= makes more sense!
croak new XML::DOM::DOMException (INDEX_SIZE_ERR,
"negative count [$count]")
if $count < 0;
substr ($data, $offset, $count);
}
sub getNodeValue
{
$_[0]->getData;
}
sub setNodeValue
{
$_[0]->setData ($_[1]);
}
######################################################################
package XML::DOM::CDATASection;
######################################################################
use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS };
BEGIN
{
import XML::DOM::CharacterData qw( :DEFAULT :Fields );
import XML::DOM::Node qw( :DEFAULT :Fields );
XML::DOM::def_fields ("", "XML::DOM::CharacterData");
}
use XML::DOM::DOMException;
sub getNodeName
{
"#cdata-section";
}
sub getNodeType
{
CDATA_SECTION_NODE;
}
sub cloneNode
{
my $self = shift;
$self->[_Doc]->createCDATASection ($self->getData);
}
#------------------------------------------------------------
# Extra method implementations
sub isReadOnly
{
0;
}
sub print
{
my ($self, $FILE) = @_;
$FILE->print ("<![CDATA[");
$FILE->print (XML::DOM::encodeCDATA ($self->getData));
$FILE->print ("]]>");
}
sub to_expat
{
my ($self, $iter) = @_;
$iter->CData ($self->getData);
}
sub _to_sax
{
my ($self, $doch, $dtdh, $enth) = @_;
$doch->start_cdata;
$doch->characters ( { Data => $self->getData } );
$doch->end_cdata;
}
######################################################################
package XML::DOM::Comment;
######################################################################
use vars qw{ @ISA @EXPORT_OK %EXPORT_TAGS %HFIELDS };
BEGIN
{
import XML::DOM::CharacterData qw( :DEFAULT :Fields );
import XML::DOM::Node qw( :DEFAULT :Fields );
XML::DOM::def_fields ("", "XML::DOM::CharacterData");
}
use XML::DOM::DOMException;
use Carp;
#?? setData - could check comment for double minus
sub getNodeType
{
COMMENT_NODE;
}
sub getNodeName
{
"#comment";
}
sub cloneNode
{
my $self = shift;
$self->[_Doc]->createComment ($self->getData);
}
#------------------------------------------------------------
# Extra method implementations
sub isReadOnly
{
return 0 if $XML::DOM::IgnoreReadOnly;
my $pa = $_[0]->[_Parent];
defined ($pa) ? $pa->isReadOnly : 0;
}
sub print
{
my ($self, $FILE) = @_;
my $comment = XML::DOM::encodeComment ($self->[_Data]);
$FILE->print ("<!--$comment-->");
}
sub to_expat
{
my ($self, $iter) = @_;
$iter->Comment ($self->getData);
}
( run in 1.485 second using v1.01-cache-2.11-cpan-13bb782fe5a )