]> granicus.if.org Git - php/commitdiff
Fixed bug #26743 (getElementsByTagName doesn't work properly)
authorRob Richards <rrichards@php.net>
Mon, 29 Dec 2003 16:44:47 +0000 (16:44 +0000)
committerRob Richards <rrichards@php.net>
Mon, 29 Dec 2003 16:44:47 +0000 (16:44 +0000)
ext/dom/dom_iterators.c
ext/dom/nodelist.c

index fe531359968ea43c81a12a84d26c82a390e8fe29..4ddb0a56e447cfbb65184b119ad845140525510b 100644 (file)
@@ -207,6 +207,8 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
                                basenode = dom_object_get_node(objmap->baseobj);
                                if (basenode && (basenode->type == XML_DOCUMENT_NODE || basenode->type == XML_HTML_DOCUMENT_NODE)) {
                                        basenode = xmlDocGetRootElement((xmlDoc *) basenode);
+                               } else {
+                                       basenode = basenode->children;
                                }
                                curnode = dom_get_elements_by_tag_name_ns_raw(basenode, objmap->ns, objmap->local, &previndex, iter->index);
                        }
@@ -264,6 +266,8 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object TS
                } else {
                        if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
                                nodep = xmlDocGetRootElement((xmlDoc *) nodep);
+                       } else {
+                               nodep = nodep->children;
                        }
                        curnode = dom_get_elements_by_tag_name_ns_raw(nodep, objmap->ns, objmap->local, &curindex, 0);
                }
index 72b7577df1ee4b3ca536b5884164737160d575b6..1f32527e98f16df84e6e85820816b0eda5012a0f 100644 (file)
@@ -71,6 +71,8 @@ int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC)
                        } else {
                                if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
                                        nodep = xmlDocGetRootElement((xmlDoc *) nodep);
+                               } else {
+                                       nodep = nodep->children;
                                }
                                curnode = dom_get_elements_by_tag_name_ns_raw(nodep, objmap->ns, objmap->local, &count, -1);
                        }
@@ -129,6 +131,8 @@ PHP_FUNCTION(dom_nodelist_item)
                                } else {
                                        if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
                                                nodep = xmlDocGetRootElement((xmlDoc *) nodep);
+                                       } else {
+                                               nodep = nodep->children;
                                        }
                                        itemnode = dom_get_elements_by_tag_name_ns_raw(nodep, objmap->ns, objmap->local, &count, index);
                                }