]> git.sesse.net Git - xml-template/commitdiff
Fix php5 node iteration. passthru passes.
authorsgunderson@bigfoot.com <>
Mon, 21 Apr 2008 19:40:25 +0000 (21:40 +0200)
committersgunderson@bigfoot.com <>
Mon, 21 Apr 2008 19:40:25 +0000 (21:40 +0200)
php5/xml-template.php

index 911a6417064b587945c609d0e62ecfd2f6706ebb..f98e67462357ddc30c07dd61471f2ca1d6a9e9fb 100644 (file)
@@ -11,7 +11,8 @@ function XML_Template_process_file($filename, $obj, $clean = 1)
 function XML_Template_process($node, $obj, $clean = 1)
 {
        if (is_a($obj, 'domnode')) {                          # overwrite
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $node->removeChild($child);
                }
 
@@ -24,13 +25,15 @@ function XML_Template_process($node, $obj, $clean = 1)
 
                XML_Template_process($newobj, array(), $clean);
        } else if (!is_array($obj)) {                         # overwrite
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $node->removeChild($child);
                }
                $doc = $node->ownerDocument;
                $node->appendChild($doc->createTextNode($obj));
        } else if (is_associative_array($obj)) {              # substitute
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $processed = false;
 
                        if ($child->nodeType == XML_ELEMENT_NODE) {
@@ -76,7 +79,8 @@ function XML_Template_process($node, $obj, $clean = 1)
                $doc = $node->ownerDocument;
                $frag = $doc->createElement("temporary-fragment");    # ugh
 
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $frag->append_child($child);
                        $node->removeChild($child);
                }
@@ -96,11 +100,13 @@ function XML_Template_process($node, $obj, $clean = 1)
 
                # remove all the <fragment> tags
 
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        if ($child->name != 'temporary-fragment') {
                                continue;
                        }
-                       foreach ($child->childNodes as $child2) {
+                       for ($j = 0; $j < $child->childNodes->length; ++$j) {
+                               $child2 = $child->childNodes->item($j);
                                $node->append_child($child2);
                        }
                        $node->removeChild($child);
@@ -123,7 +129,8 @@ function XML_Template_clean($node)
                # after we've done any required replacements
                $doc = $node->ownerDocument;
                $parent = $node->parent_node();
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $node->removeChild($child);
                        $node->insert_before($child, $node);
                }
@@ -170,7 +177,8 @@ function own_clone_node($node, $doc)
                                $newnode->append_child($attr2);
                        }
                }
-               foreach ($node->childNodes as $child) {
+               for ($i = 0; $i < $node->childNodes->length; ++$i) {
+                       $child = $node->childNodes->item($i);
                        $newnode->append_child(own_clone_node($child, $doc));
                }
                return $newnode;