Alright, let's try again. This should really be the patch.


Michael

On 7/14/06, Robert Deaton <[EMAIL PROTECTED] > wrote:
Looks like your attachment was stripped, try sending it as something text/plain.

--
--Robert Deaton

Index: simplexml.c
===================================================================
RCS file: /repository/php-src/ext/simplexml/simplexml.c,v
retrieving revision 1.151.2.22
diff -u -u -r1.151.2.22 simplexml.c
--- simplexml.c 14 Apr 2006 15:19:45 -0000      1.151.2.22
+++ simplexml.c 16 Jun 2006 04:10:42 -0000
@@ -1410,6 +1410,48 @@
 }
 /* }}} */
 
+
+/* {{{ proto void SimpleXMLElement::addElement(sxeobject node }}} */
+       SXE_METHOD(addElement)
+       {
+               zval *childnode;
+               php_sxe_object *sxe = php_sxe_fetch_object(getThis() 
TSRMLS_CC), *childsxe;
+               xmlNodePtr node, childptr, new_child = NULL;
+
+               GET_NODE(sxe, node);
+               node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", 
&childnode) == FAILURE) {
+                       return;
+               }
+               childsxe = (php_libxml_node_object 
*)zend_object_store_get_object(childnode TSRMLS_CC);
+               childptr = php_libxml_import_node(childsxe TSRMLS_CC);
+
+               if (sxe->iter.type == SXE_ITER_ATTRLIST) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot add 
element to attributes");
+                       return;
+               }
+
+               GET_NODE(childsxe, childptr);
+
+               childptr = php_sxe_get_first_node(childsxe, childptr TSRMLS_CC);
+
+               if(childptr->parent != NULL) {
+                       xmlUnlinkNode(childptr);
+               }
+
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't append 
node %d", childptr->type);
+               
+               new_child = xmlAddChild(node, childptr);
+               if (new_child == NULL) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't 
append node");
+                       RETURN_FALSE;
+               }
+
+       }
+
+/* }}} */
+
 /* {{{ proto void SimpleXMLElement::addChild(string qName [, string value 
[,string ns]])
    Add Element with optional namespace information */
 SXE_METHOD(addChild)
@@ -2256,6 +2298,7 @@
        SXE_ME(getNamespaces,          NULL, ZEND_ACC_PUBLIC)
        SXE_ME(getDocNamespaces,       NULL, ZEND_ACC_PUBLIC)
        SXE_ME(getName,                NULL, ZEND_ACC_PUBLIC)
+       SXE_ME(addElement,             NULL, ZEND_ACC_PUBLIC)
        SXE_ME(addChild,               NULL, ZEND_ACC_PUBLIC)
        SXE_ME(addAttribute,           NULL, ZEND_ACC_PUBLIC)
        {NULL, NULL, NULL}
-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to