File Coverage

lib/XML/DOM/Lite/Document.pm
Criterion Covered Total %
statement 48 57 84.2
branch 4 6 66.6
condition 3 3 100.0
subroutine 17 20 85.0
pod 0 14 0.0
total 72 100 72.0


line stmt bran cond sub pod time code
1             package XML::DOM::Lite::Document;
2              
3 8     8   74 use strict;
  8         15  
  8         284  
4 8     8   52 use warnings;
  8         13  
  8         243  
5              
6 8     8   40 use Carp qw (carp croak cluck);
  8         14  
  8         801  
7              
8 8     8   552 use XML::DOM::Lite::Constants qw(:all);
  8         15  
  8         1838  
9 8     8   13121 use XML::DOM::Lite::XPath;
  8         22  
  8         347  
10              
11 8     8   76 use base qw(XML::DOM::Lite::Node);
  8         14  
  8         4489  
12              
13             sub new {
14 12     12 0 33 my ($class) = @_;
15 12         386 return bless $class->SUPER::new({
16             nodeName => '#document',
17             nodeType => DOCUMENT_NODE,
18             childNodes => [ ],
19             elements => { },
20             }), $class;
21             }
22              
23 3     3 0 14 sub parentNode { undef }
24              
25             sub appendChild {
26 17     17 0 37 my ($self, $node) = @_;
27 17 100 100     142 if (not $self->{documentElement} and ($node->nodeType == ELEMENT_NODE)) {
28 12         35 $self->{documentElement} = $node;
29             }
30 17         115 return $self->SUPER::appendChild($node);
31             }
32              
33             sub setElementById {
34 7     7 0 14 my ($self, $id, $node) = @_;
35 7         20 $self->{elements}->{$id} = $node;
36             }
37              
38             sub getElementById {
39 2     2 0 1315 my ($self, $id) = @_;
40 2 50       20 return $self->{elements}->{$id} if exists $self->{elements}->{$id};
41             }
42              
43             sub createElement {
44 4     4 0 10 my ($self, $tagName) = @_;
45 4         20 my $node = XML::DOM::Lite::Node->new({
46             nodeName => $tagName,
47             tagName => $tagName,
48             nodeType => ELEMENT_NODE,
49             });
50 4         10 $node->ownerDocument($self);
51 4         8 return $node;
52             }
53              
54             sub createAttribute {
55 0     0 0 0 my ($self, $nodeName) = @_;
56 0         0 my $attr = XML::DOM::Lite::Node->new({
57             nodeName => $nodeName,
58             nodeType => ATTRIBUTE_NODE,
59             });
60 0         0 $attr->ownerDocument($self);
61 0         0 return $attr;
62             }
63              
64             sub createTextNode {
65 1     1 0 3 my ($self, $str) = @_;
66 1         6 my $node = XML::DOM::Lite::Node->new({
67             nodeName => '#text',
68             nodeType => TEXT_NODE,
69             nodeValue => $str,
70             });
71 1         4 $node->ownerDocument($self);
72 1         3 return $node;
73             }
74              
75             sub createDocumentFragment {
76 2     2 0 806 my $self = shift;
77 2         22 my $frag = XML::DOM::Lite::Node->new({
78             nodeName => '#document-fragment',
79             nodeType => DOCUMENT_FRAGMENT_NODE,
80             ownerDocument => $self,
81             });
82 2         8 $frag->ownerDocument($self);
83 2         5 return $frag;
84             }
85              
86             sub documentElement {
87 20     20 0 3591 my $self = shift;
88 20 50       69 if (@_) {
89 0         0 $self->{documentElement} = shift;
90             }
91 20         121 $self->{documentElement};
92             }
93              
94             sub selectNodes {
95 1     1 0 2 my ($self, $path) = @_;
96 1         10 return XML::DOM::Lite::XPath->evaluate($path, $self);
97             }
98              
99             sub selectSingleNode {
100 1     1 0 2 my ($self, $path) = @_;
101 1         4 return $self->selectNodes($path)->[0];
102             }
103              
104             sub elements {
105 0     0 0   return $_[0]->{elements};
106             }
107              
108             sub xml {
109 0     0 0   my $self = shift;
110 0           my $serializer = XML::DOM::Lite::Serializer->new;
111 0           return $serializer->serializeToString($self->documentElement);
112             }
113              
114             1;
115             __END__