Sure, documents can call dumpmem(), but there's no way to get the XML of a node.
Until now! Not knowing at all what I was doing, I copied code from the function unlink_node and modified it to call xmlDumpNode(). It works for me, though I expect there's probably a memory leak in it since I don't know (right now) the proper way to deallocate an xmlBufferPtr. To make it work, you need to edit php_domxml.c and insert a suitably modified line everywhere you see a reference to unlink_node. -- .tom
PHP_FUNCTION(domxml_dump_node) { zval *id, **tmp; xmlBuffer *buf; xmlDoc *doc; xmlNode *nodep, *last; int ret; if (ZEND_NUM_ARGS() == 0) { id = getThis(); if (id) { if (zend_hash_find(id->value.obj.properties, "node", sizeof("node"), (void **)&tmp) == FAILURE) { php_error(E_WARNING, "unable to find my handle property"); RETURN_FALSE; } ZEND_FETCH_RESOURCE(nodep,xmlNodePtr,tmp,-1, "DomNode", le_domxmlnodep) } else { RETURN_FALSE; } } else if ((ZEND_NUM_ARGS() != 1) || getParameters(ht, 1, &id) == FAILURE) { WRONG_PARAM_COUNT; } else { if (zend_hash_find(id->value.obj.properties, "node", sizeof("node"), (void **)&tmp) == FAILURE) { php_error(E_WARNING, "unable to find my handle property"); RETURN_FALSE; } ZEND_FETCH_RESOURCE(nodep,xmlNodePtr,tmp,-1, "DomNode", le_domxmlnodep) } buf = xmlBufferCreate(); xmlNodeDump(buf, nodep->doc, nodep, 1, 0); FREE_RETURN_STRINGL(buf->content, buf->use, 1); }
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]