@@ -266,6 +266,16 @@ static void dom_map_get_elements_item(dom_nnodemap_object *map, zend_long index,
266266	}
267267}
268268
269+ static  void  dom_map_collection_named_item_elements_iter (dom_nnodemap_object  * map , php_dom_obj_map_collection_iter  * iter )
270+ {
271+ 	if  (iter -> candidate  !=  iter -> basep -> children ) {
272+ 		iter -> candidate  =  iter -> candidate -> next ;
273+ 	}
274+ 	while  (iter -> candidate  &&  iter -> candidate -> type  !=  XML_ELEMENT_NODE ) {
275+ 		iter -> candidate  =  iter -> candidate -> next ;
276+ 	}
277+ }
278+ 
269279static  void  dom_map_get_by_tag_name_item (dom_nnodemap_object  * map , zend_long  index , zval  * return_value )
270280{
271281	xmlNodePtr  nodep  =  dom_object_get_node (map -> baseobj );
@@ -282,6 +292,12 @@ static void dom_map_get_by_tag_name_item(dom_nnodemap_object *map, zend_long ind
282292	}
283293}
284294
295+ static  void  dom_map_collection_named_item_by_tag_name_iter (dom_nnodemap_object  * map , php_dom_obj_map_collection_iter  * iter )
296+ {
297+ 	iter -> candidate  =  dom_get_elements_by_tag_name_ns_raw (iter -> basep , iter -> candidate , map -> ns , map -> local , map -> local_lower , & iter -> cur , iter -> next );
298+ 	iter -> next  =  iter -> cur  +  1 ;
299+ }
300+ 
285301static  void  dom_map_get_null_item (dom_nnodemap_object  * map , zend_long  index , zval  * return_value )
286302{
287303	RETURN_NULL ();
@@ -447,6 +463,7 @@ const php_dom_obj_map_handler php_dom_obj_map_attributes = {
447463	.get_item  =  dom_map_get_attributes_item ,
448464	.get_ns_named_item  =  dom_map_get_ns_named_item_prop ,
449465	.has_ns_named_item  =  dom_map_has_ns_named_item_prop ,
466+ 	.collection_named_item_iter  =  NULL ,
450467	.use_cache  =  false,
451468	.nameless  =  false,
452469};
@@ -456,6 +473,7 @@ const php_dom_obj_map_handler php_dom_obj_map_by_tag_name = {
456473	.get_item  =  dom_map_get_by_tag_name_item ,
457474	.get_ns_named_item  =  dom_map_get_ns_named_item_null ,
458475	.has_ns_named_item  =  dom_map_has_ns_named_item_null ,
476+ 	.collection_named_item_iter  =  dom_map_collection_named_item_by_tag_name_iter ,
459477	.use_cache  =  true,
460478	.nameless  =  true,
461479};
@@ -465,6 +483,7 @@ const php_dom_obj_map_handler php_dom_obj_map_child_nodes = {
465483	.get_item  =  dom_map_get_nodes_item ,
466484	.get_ns_named_item  =  dom_map_get_ns_named_item_null ,
467485	.has_ns_named_item  =  dom_map_has_ns_named_item_null ,
486+ 	.collection_named_item_iter  =  NULL ,
468487	.use_cache  =  true,
469488	.nameless  =  true,
470489};
@@ -474,6 +493,7 @@ const php_dom_obj_map_handler php_dom_obj_map_nodeset = {
474493	.get_item  =  dom_map_get_nodeset_item ,
475494	.get_ns_named_item  =  dom_map_get_ns_named_item_null ,
476495	.has_ns_named_item  =  dom_map_has_ns_named_item_null ,
496+ 	.collection_named_item_iter  =  NULL ,
477497	.use_cache  =  false,
478498	.nameless  =  true,
479499};
@@ -483,6 +503,7 @@ const php_dom_obj_map_handler php_dom_obj_map_entities = {
483503	.get_item  =  dom_map_get_entity_item ,
484504	.get_ns_named_item  =  dom_map_get_ns_named_item_entity ,
485505	.has_ns_named_item  =  dom_map_has_ns_named_item_xmlht ,
506+ 	.collection_named_item_iter  =  NULL ,
486507	.use_cache  =  false,
487508	.nameless  =  false,
488509};
@@ -492,6 +513,7 @@ const php_dom_obj_map_handler php_dom_obj_map_notations = {
492513	.get_item  =  dom_map_get_notation_item ,
493514	.get_ns_named_item  =  dom_map_get_ns_named_item_notation ,
494515	.has_ns_named_item  =  dom_map_has_ns_named_item_xmlht ,
516+ 	.collection_named_item_iter  =  NULL ,
495517	.use_cache  =  false,
496518	.nameless  =  false,
497519};
@@ -501,6 +523,7 @@ const php_dom_obj_map_handler php_dom_obj_map_child_elements = {
501523	.get_item  =  dom_map_get_elements_item ,
502524	.get_ns_named_item  =  dom_map_get_ns_named_item_null ,
503525	.has_ns_named_item  =  dom_map_has_ns_named_item_null ,
526+ 	.collection_named_item_iter  =  dom_map_collection_named_item_elements_iter ,
504527	.use_cache  =  true,
505528	.nameless  =  true,
506529};
@@ -510,6 +533,7 @@ const php_dom_obj_map_handler php_dom_obj_map_noop = {
510533	.get_item  =  dom_map_get_null_item ,
511534	.get_ns_named_item  =  dom_map_get_ns_named_item_null ,
512535	.has_ns_named_item  =  dom_map_has_ns_named_item_null ,
536+ 	.collection_named_item_iter  =  NULL ,
513537	.use_cache  =  false,
514538	.nameless  =  true,
515539};
0 commit comments