comparison Lib/IMPL/DOM/Node.pm @ 152:1e7f03414b65

DOM: schema improvements DOM: saving to XML::Writer feature
author wizard
date Thu, 23 Sep 2010 03:58:43 +0400
parents e6447ad85cb4
children 76515373dac0
comparison
equal deleted inserted replaced
151:e36ffd8c29db 152:1e7f03414b65
315 sub firstChild { 315 sub firstChild {
316 @_ >=2 ? $_[0]->replaceNodeAt(0,$_[1]) : $_[0]->childNodes->[0]; 316 @_ >=2 ? $_[0]->replaceNodeAt(0,$_[1]) : $_[0]->childNodes->[0];
317 } 317 }
318 318
319 sub _getIsComplex { 319 sub _getIsComplex {
320 $_[0]->childNodes->Count ? 1 : 0; 320 ($_[0]->{$childNodes} and $_[0]->{$childNodes}->Count) ? 1 : 0;
321 } 321 }
322 322
323 sub _updateDocRefs { 323 sub _updateDocRefs {
324 my ($this) = @_; 324 my ($this) = @_;
325 325
390 my %props = map {$_->Name, 1} $this->get_meta(typeof IMPL::Class::PropertyInfo, sub { $_->Attributes->{domProperty}},1); 390 my %props = map {$_->Name, 1} $this->get_meta(typeof IMPL::Class::PropertyInfo, sub { $_->Attributes->{domProperty}},1);
391 391
392 return (keys %props,keys %{$this->{$_propertyMap}}); 392 return (keys %props,keys %{$this->{$_propertyMap}});
393 } 393 }
394 394
395 sub save {
396 my ($this,$writer) = @_;
397
398 if ( not ( $this->isComplex or defined $this->{$nodeValue} ) ) {
399 $writer->emptyTag(
400 $this->{$nodeName},
401 map {
402 $_,
403 $this->nodeProperty($_)
404 } grep defined $this->nodeProperty($_), $this->listProperties
405 );
406 } else {
407 $writer->startTag(
408 $this->{$nodeName},
409 map {
410 $_,
411 $this->nodeProperty($_)
412 } grep defined $this->nodeProperty($_), $this->listProperties
413 );
414 $writer->characters($this->{$nodeValue}) if $this->{$nodeValue};
415
416 $_->save($writer) foreach $this->childNodes;
417
418 $writer->endTag($this->{$nodeName});
419 }
420 }
421
395 sub qname { 422 sub qname {
396 $_[0]->{$nodeName}; 423 $_[0]->{$nodeName};
397 } 424 }
398 425
399 sub path { 426 sub path {