@@ -266,6 +266,16 @@ static void dom_map_get_elements_item(dom_nnodemap_object *map, zend_long index,
266
266
}
267
267
}
268
268
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
+
269
279
static void dom_map_get_by_tag_name_item (dom_nnodemap_object * map , zend_long index , zval * return_value )
270
280
{
271
281
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
282
292
}
283
293
}
284
294
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
+
285
301
static void dom_map_get_null_item (dom_nnodemap_object * map , zend_long index , zval * return_value )
286
302
{
287
303
RETURN_NULL ();
@@ -447,6 +463,7 @@ const php_dom_obj_map_handler php_dom_obj_map_attributes = {
447
463
.get_item = dom_map_get_attributes_item ,
448
464
.get_ns_named_item = dom_map_get_ns_named_item_prop ,
449
465
.has_ns_named_item = dom_map_has_ns_named_item_prop ,
466
+ .collection_named_item_iter = NULL ,
450
467
.use_cache = false,
451
468
.nameless = false,
452
469
};
@@ -456,6 +473,7 @@ const php_dom_obj_map_handler php_dom_obj_map_by_tag_name = {
456
473
.get_item = dom_map_get_by_tag_name_item ,
457
474
.get_ns_named_item = dom_map_get_ns_named_item_null ,
458
475
.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 ,
459
477
.use_cache = true,
460
478
.nameless = true,
461
479
};
@@ -465,6 +483,7 @@ const php_dom_obj_map_handler php_dom_obj_map_child_nodes = {
465
483
.get_item = dom_map_get_nodes_item ,
466
484
.get_ns_named_item = dom_map_get_ns_named_item_null ,
467
485
.has_ns_named_item = dom_map_has_ns_named_item_null ,
486
+ .collection_named_item_iter = NULL ,
468
487
.use_cache = true,
469
488
.nameless = true,
470
489
};
@@ -474,6 +493,7 @@ const php_dom_obj_map_handler php_dom_obj_map_nodeset = {
474
493
.get_item = dom_map_get_nodeset_item ,
475
494
.get_ns_named_item = dom_map_get_ns_named_item_null ,
476
495
.has_ns_named_item = dom_map_has_ns_named_item_null ,
496
+ .collection_named_item_iter = NULL ,
477
497
.use_cache = false,
478
498
.nameless = true,
479
499
};
@@ -483,6 +503,7 @@ const php_dom_obj_map_handler php_dom_obj_map_entities = {
483
503
.get_item = dom_map_get_entity_item ,
484
504
.get_ns_named_item = dom_map_get_ns_named_item_entity ,
485
505
.has_ns_named_item = dom_map_has_ns_named_item_xmlht ,
506
+ .collection_named_item_iter = NULL ,
486
507
.use_cache = false,
487
508
.nameless = false,
488
509
};
@@ -492,6 +513,7 @@ const php_dom_obj_map_handler php_dom_obj_map_notations = {
492
513
.get_item = dom_map_get_notation_item ,
493
514
.get_ns_named_item = dom_map_get_ns_named_item_notation ,
494
515
.has_ns_named_item = dom_map_has_ns_named_item_xmlht ,
516
+ .collection_named_item_iter = NULL ,
495
517
.use_cache = false,
496
518
.nameless = false,
497
519
};
@@ -501,6 +523,7 @@ const php_dom_obj_map_handler php_dom_obj_map_child_elements = {
501
523
.get_item = dom_map_get_elements_item ,
502
524
.get_ns_named_item = dom_map_get_ns_named_item_null ,
503
525
.has_ns_named_item = dom_map_has_ns_named_item_null ,
526
+ .collection_named_item_iter = dom_map_collection_named_item_elements_iter ,
504
527
.use_cache = true,
505
528
.nameless = true,
506
529
};
@@ -510,6 +533,7 @@ const php_dom_obj_map_handler php_dom_obj_map_noop = {
510
533
.get_item = dom_map_get_null_item ,
511
534
.get_ns_named_item = dom_map_get_ns_named_item_null ,
512
535
.has_ns_named_item = dom_map_has_ns_named_item_null ,
536
+ .collection_named_item_iter = NULL ,
513
537
.use_cache = false,
514
538
.nameless = true,
515
539
};
0 commit comments