cvs: php4 /ext/domxml php_domxml.c php_domxml.h

From: Date: Fri, 18 Jan 2002 12:40:13 +0000
Subject: cvs: php4 /ext/domxml php_domxml.c php_domxml.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-9086@lists.php.net to get a copy of this message
chregu Fri Jan 18 07:40:13 2002 EDT Modified files: /php4/ext/domxml php_domxml.c php_domxml.h Log: - added macro DOMXML_PARAM_ONE @- added function domxml_dump_node($doc,$node). Dumps a node plus all @ children into a string. (chregu) Index: php4/ext/domxml/php_domxml.c diff -u php4/ext/domxml/php_domxml.c:1.102 php4/ext/domxml/php_domxml.c:1.103 --- php4/ext/domxml/php_domxml.c:1.102 Fri Jan 18 06:04:09 2002 +++ php4/ext/domxml/php_domxml.c Fri Jan 18 07:40:12 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.c,v 1.102 2002/01/18 11:04:09 chregu Exp $ */ +/* $Id: php_domxml.c,v 1.103 2002/01/18 12:40:12 chregu Exp $ */ /* TODO * - Support Notation Nodes @@ -84,6 +84,17 @@ } \ DOMXML_GET_OBJ(ret, zval, le); +#define DOMXML_PARAM_ONE(ret, zval, le, s, p1) if (NULL == (zval = getThis())) { \ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o"s, &zval, p1) == FAILURE) { \ + return; \ + } \ + } else { \ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, s, p1) == FAILURE) { \ + return; \ + } \ + } \ + DOMXML_GET_OBJ(ret, zval, le); + #define DOMXML_PARAM_TWO(ret, zval, le, s, p1, p2) if (NULL == (zval = getThis())) { \ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o"s, &zval, p1, p2) == FAILURE) { \ return; \ @@ -180,6 +191,7 @@ PHP_FE(domxml_add_root, NULL) PHP_FE(domxml_dump_mem, NULL) PHP_FE(domxml_dump_mem_file, NULL) + PHP_FE(domxml_dump_node, NULL) #if defined(LIBXML_HTML_ENABLED) PHP_FE(domxml_html_dump_mem, NULL) #endif @@ -310,6 +322,7 @@ PHP_FALIAS(node_value, domxml_node_value, NULL) PHP_FALIAS(clone_node, domxml_clone_node, NULL) PHP_FALIAS(is_blank_node, domxml_is_blank_node, NULL) + PHP_FALIAS(dump_node, domxml_dump_node, NULL) {NULL, NULL, NULL} }; @@ -2631,6 +2644,48 @@ RETURN_FALSE; } RETURN_LONG(bytes); +} +/* }}} */ + +/* {{{ proto string domxml_dump_node([object doc_handle],object node_handle) + Dumps node into string */ +PHP_FUNCTION(domxml_dump_node) +{ + zval *id, *nodep; + xmlDocPtr docp; + xmlNodePtr elementp; + xmlChar *mem ; + xmlBufferPtr buf; + int level = 0; + int format = 0; + + DOMXML_PARAM_ONE(docp, id, le_domxmldocp,"o",&nodep); + + DOMXML_GET_OBJ(elementp, nodep, le_domxmlnodep); + + if (Z_TYPE_P(elementp) == XML_DOCUMENT_NODE || Z_TYPE_P(elementp) == XML_HTML_DOCUMENT_NODE ) { + php_error(E_WARNING, "%s(): cannot dump element with a document node", get_active_function_name(TSRMLS_C)); + RETURN_FALSE; + } + + buf = xmlBufferCreate(); + if (!buf) + { + php_error(E_WARNING, "%s(): could fetch buffer", get_active_function_name(TSRMLS_C)); + RETURN_FALSE; + } + + xmlNodeDump(buf, docp, elementp,level,format); + + mem = xmlBufferContent(buf); + + if (!mem) { + RETURN_FALSE; + } + RETVAL_STRING(mem, 1); + + xmlBufferFree(buf); + } /* }}} */ Index: php4/ext/domxml/php_domxml.h diff -u php4/ext/domxml/php_domxml.h:1.39 php4/ext/domxml/php_domxml.h:1.40 --- php4/ext/domxml/php_domxml.h:1.39 Fri Jan 18 06:04:10 2002 +++ php4/ext/domxml/php_domxml.h Fri Jan 18 07:40:12 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.h,v 1.39 2002/01/18 11:04:10 chregu Exp $ */ +/* $Id: php_domxml.h,v 1.40 2002/01/18 12:40:12 chregu Exp $ */ #ifndef PHP_DOMXML_H #define PHP_DOMXML_H @@ -80,6 +80,7 @@ PHP_FUNCTION(domxml_intdtd); PHP_FUNCTION(domxml_dump_mem); PHP_FUNCTION(domxml_dump_mem_file); +PHP_FUNCTION(domxml_dump_node); #if defined(LIBXML_HTML_ENABLED) PHP_FUNCTION(domxml_html_dump_mem);

« previous php.cvs (#9086) next »