cvs: php4 /ext/domxml php_domxml.c php_domxml.h
| From: | Christian Stocker | 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);