- Add another write case

This commit is contained in:
Marcus Boerger 2006-02-26 13:37:54 +00:00
parent 75b3d578d3
commit 24d83ebd0f
2 changed files with 47 additions and 0 deletions

View file

@ -451,9 +451,14 @@ static void sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_boo
attr = (xmlAttrPtr)node; attr = (xmlAttrPtr)node;
test = sxe->iter.name != NULL; test = sxe->iter.name != NULL;
} else if (sxe->iter.type != SXE_ITER_CHILD) { } else if (sxe->iter.type != SXE_ITER_CHILD) {
mynode = node;
node = php_sxe_get_first_node(sxe, node TSRMLS_CC); node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
attr = node ? node->properties : NULL; attr = node ? node->properties : NULL;
test = 0; test = 0;
if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) {
node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL);
attr = node->properties;
}
} }
mynode = node; mynode = node;

42
ext/simplexml/tests/028.phpt Executable file
View file

@ -0,0 +1,42 @@
--TEST--
SimpleXML: Adding an elements without text
--SKIPIF--
<?php if (!extension_loaded("simplexml")) print "skip"; ?>
--FILE--
<?php
$xml =<<<EOF
<people></people>
EOF;
function traverse_xml($xml, $pad = '')
{
$name = $xml->getName();
echo "$pad<$name";
foreach($xml->attributes() as $attr => $value)
{
echo " $attr=\"$value\"";
}
echo ">" . trim($xml) . "\n";
foreach($xml->children() as $node)
{
traverse_xml($node, $pad.' ');
}
echo $pad."</$name>\n";
}
$people = simplexml_load_string($xml);
traverse_xml($people);
$people->person['name'] = 'John';
traverse_xml($people);
?>
===DONE===
--EXPECTF--
<people>
</people>
<people>
<person name="John">
</person>
</people>
===DONE===