Re: DOM - change a tag name ??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Michael A. Peters wrote:
If I'm manipulating a dom object, is there a way to change the tag name?
I know you manipulate just about everything else in a node - but is the tagName really off limits?

from the documentation for DOMElement -

/* Properties */
readonly public bool $schemaTypeInfo ;
readonly public string $tagName ;

so if I really needed to change it, I'd have to create a virgin node with the new name, identical attributes and children, and replace the existing node with the new one?

Is there any other way to alter the tagName without doing all that?


I've not actually tried this (IE may be errors) - I will in a little bit, but is something like this really the only way to change a tag name?

function changeNodeElement($document,$node,$elementTag) {
   $newNode = $document->createElement($elementTag);
   // get all attributes from old node
   $attributes = $node->attributes;
   foreach ($attributes as $attribute) {
      $name = $attribute->name;
      $value = $attribute->value;
      $newNode->setAttribute($name,$value);
      }
   // get all children from old node
   $children = $node->childNodes();
   foreach ($children as $child) {
      // clone node and add it to newNode
      $newChild = $child->cloneNode(true);
      $newNode->appendChild($newChild);
      }
   // replace the old node with the newNode
   $node->parent->replaceChild($newNode,$node);
   }

It seems that changing the tag name should be a little easier. I don't expect s/oldtag/newtag/ but am I just missing something obvious?



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux