rrichards Mon Jun 16 15:44:22 2008 UTC Added files: /php-src/ext/xmlreader/tests expand.phpt
Modified files: /php-src/ext/xmlreader php_xmlreader.c Log: add parameter allowing node to be exported into existing Document context add test fix warnings http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/php_xmlreader.c?r1=1.51&r2=1.52&diff_format=u Index: php-src/ext/xmlreader/php_xmlreader.c diff -u php-src/ext/xmlreader/php_xmlreader.c:1.51 php-src/ext/xmlreader/php_xmlreader.c:1.52 --- php-src/ext/xmlreader/php_xmlreader.c:1.51 Mon Dec 31 07:12:17 2007 +++ php-src/ext/xmlreader/php_xmlreader.c Mon Jun 16 15:44:22 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlreader.c,v 1.51 2007/12/31 07:12:17 sebastian Exp $ */ +/* $Id: php_xmlreader.c,v 1.52 2008/06/16 15:44:22 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1180,12 +1180,22 @@ PHP_METHOD(xmlreader, expand) { #ifdef HAVE_DOM - zval *id, *rv = NULL; + zval *id, *rv = NULL, *basenode = NULL; int ret; xmlreader_object *intern; xmlNode *node, *nodec; + xmlDocPtr docp = NULL; + php_libxml_node_object *domobj = NULL; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|O!", &id, xmlreader_class_entry, &basenode, dom_node_class_entry) == FAILURE) { + return; + } + + if (basenode != NULL) { + NODE_GET_OBJ(node, basenode, xmlNodePtr, domobj); + docp = node->doc; + } - id = getThis(); intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern && intern->ptr) { @@ -1195,12 +1205,12 @@ php_error_docref(NULL TSRMLS_CC, E_WARNING, "An Error Occured while expanding"); RETURN_FALSE; } else { - nodec = xmlCopyNode(node, 1); + nodec = xmlDocCopyNode(node, docp, 1); if (nodec == NULL) { php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Cannot expand this node type"); RETURN_FALSE; } else { - DOM_RET_OBJ(rv, nodec, &ret, NULL); + DOM_RET_OBJ(rv, nodec, &ret, (dom_object *)domobj); } } } else { http://cvs.php.net/viewvc.cgi/php-src/ext/xmlreader/tests/expand.phpt?view=markup&rev=1.1 Index: php-src/ext/xmlreader/tests/expand.phpt +++ php-src/ext/xmlreader/tests/expand.phpt --TEST-- XMLReader: Expand into existing DOM documet --SKIPIF-- <?php if (!extension_loaded("xmlreader")) print "skip"; if (!extension_loaded("dom")) print "skip"; $reader = new XMLReader(); if (!method_exists($reader, 'expand')) print "skip"; ?> --FILE-- <?php $basexml = '<?xml version="1.0" encoding="UTF-8"?> <books><book>base book</book></books>'; $xmlstring = '<?xml version="1.0" encoding="UTF-8"?> <books><book>new book</book></books>'; $dom = new DOMDocument(); $dom->loadXML($basexml); $reader = new XMLReader(); $reader->XML($xmlstring); while ($reader->read()) { if ($reader->localName == "book") { $node = $reader->expand($dom); if ($node->ownerDocument) { echo $node->ownerDocument->documentElement->firstChild->textContent . "\n"; } break; } } $reader->close(); ?> ===DONE=== --EXPECT-- base book ===DONE=== -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php