Hi, Hope, I understand your point. It looks like having two DOMs is not in your plans :-) getParent is really equal to xsearch('..'). But what about name? Is it possible to get the name of the current simplexml_element using xsearch? I also wonder if I created "right" functions because I plan to create a tutor article "How to extend PHP" with these functions as examples. Are they correct from this point of view?
Regards, Alexander Netkachev Sterling Hughes wrote: > Funny, i writing a response to adam's message while this got to the > mailing list. Take a look at my response to adam, as it covers this > patch as well. > > -Sterling > >> Hi! >> >> I'm just playing with simplexml and wonder if two new functions of the >> simplexml_element object would be usefull: getName() and getParent(). I'm >> interesting in adding them to the extention, if possible. What should I >> do for this? (I also think that it may be in FAQ, but I did not find that >> info with my search skills). >> Basically, this is my first experiment with PHP Extensions. I may be >> wrong with my code, but tests pass is ok >> >> ----------------------- >> Thank you for time, >> Alexander Netkachev >> http://devlink.narod.ru/ >> >> Code for getName function: >> /* {{{ getName() >> */ >> SXE_METHOD(getName) >> { >> char *name; >> xmlNodePtr node; // current node >> php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); >> GET_NODE(sxe, node); >> if (node && (name = (char *)(node->name))) { >> RETURN_STRING(name, 1); >> } >> RETURN_EMPTY_STRING(); >> } >> /* }}} */ >> >> /* {{{ getParent() >> */ >> SXE_METHOD(getParent) >> { >> xmlNodePtr node; // current node >> xmlNodePtr pNode; // node->parent >> php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); >> GET_NODE(sxe, node); >> if (node && (pNode = node->parent)) { >> _node_as_zval(sxe, pNode, return_value TSRMLS_CC); >> return; >> } >> RETURN_NULL(); >> } >> /* }}} */ >> >> File: ext/simplexml/tests/019.phpt >> --TEST-- >> SimpleXML: Test getParent() and getName() functions >> --SKIPIF-- >> <?php if (!extension_loaded("simplexml")) print "skip"; ?> >> --FILE-- >> <?php >> $doc = simplexml_load_string('<html><body></body></html>'); >> var_dump(trim($doc->body->getParent()->getName())); >> echo '--done--'; >> ?> >> --EXPECT-- >> string(4) "html" >> --done-- >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php