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]