mirror of
https://github.com/php/php-src.git
synced 2024-09-27 04:47:22 +00:00
MFB: fix bug #41861 (getNamespaces() returns namespaces of node's siblings)
add test
This commit is contained in:
parent
4d159caf3f
commit
7b62431305
@ -1458,15 +1458,12 @@ SXE_METHOD(getNamespaces)
|
||||
GET_NODE(sxe, node);
|
||||
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
|
||||
|
||||
while (node) {
|
||||
SKIP_TEXT(node)
|
||||
if (node) {
|
||||
if (node->type == XML_ELEMENT_NODE) {
|
||||
sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC);
|
||||
} else if (node->type == XML_ATTRIBUTE_NODE && node->ns) {
|
||||
sxe_add_namespace_name(return_value, node->ns TSRMLS_CC);
|
||||
}
|
||||
next_iter:
|
||||
node = node->next;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
38
ext/simplexml/tests/bug41861.phpt
Normal file
38
ext/simplexml/tests/bug41861.phpt
Normal file
@ -0,0 +1,38 @@
|
||||
--TEST--
|
||||
Bug #41861 (getNamespaces() returns the namespaces of a node's siblings)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$xml = simplexml_load_string('<root>
|
||||
<first_node_no_ns />
|
||||
<ns1:node1 xmlns:ns1="#ns1" />
|
||||
<ns2:node2 xmlns:ns2="#ns2" />
|
||||
<ns3:node3 xmlns:ns3="#ns3" />
|
||||
<last_node_no_ns />
|
||||
</root>');
|
||||
|
||||
$name = $xml->getName();
|
||||
$namespaces = $xml->getNamespaces(True);
|
||||
echo "root(recursive): '$name' -- namespaces: ", implode(', ', $namespaces), "\n";
|
||||
$namespaces = $xml->getNamespaces(False);
|
||||
echo "root(non-recursive): '$name' -- namespaces: ", implode(', ', $namespaces), "\n";
|
||||
|
||||
foreach (array(null, '#ns1', '#ns2', '#ns3') as $ns)
|
||||
{
|
||||
foreach ($xml->children($ns) as $child)
|
||||
{
|
||||
$name = $child->getName();
|
||||
$namespaces = $child->getNamespaces(false);
|
||||
|
||||
echo "children($ns): '$name' -- namespaces: ", implode(', ', $namespaces), "\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
root(recursive): 'root' -- namespaces: #ns1, #ns2, #ns3
|
||||
root(non-recursive): 'root' -- namespaces:
|
||||
children(): 'first_node_no_ns' -- namespaces:
|
||||
children(): 'last_node_no_ns' -- namespaces:
|
||||
children(#ns1): 'node1' -- namespaces: #ns1
|
||||
children(#ns2): 'node2' -- namespaces: #ns2
|
||||
children(#ns3): 'node3' -- namespaces: #ns3
|
Loading…
Reference in New Issue
Block a user