/*! * \brief Recursively traverse the whole tree, search for element with the * given tagname. */ static void ixmlNode_getElementsByTagNameRecursive( /*! [in] The \b Node tree. */ IXML_Node *n, /*! [in] The tag name to match. */ const char *tagname, /*! [out] The output \b NodeList. */ IXML_NodeList **list) { const char *name; if (n != NULL) { if (ixmlNode_getNodeType(n) == eELEMENT_NODE) { name = ixmlNode_getNodeName(n); if (strcmp(tagname, name) == 0 || strcmp(tagname, "*") == 0) { ixmlNodeList_addToNodeList(list, n); } } ixmlNode_getElementsByTagNameRecursive(ixmlNode_getFirstChild(n), tagname, list); ixmlNode_getElementsByTagNameRecursive(ixmlNode_getNextSibling(n), tagname, list); } }
/*================================================================ * ixmlNode_getElementsByTagNameRecursive * Recursively traverse the whole tree, search for element * with the given tagname. * Internal to parser. * *=================================================================*/ void ixmlNode_getElementsByTagNameRecursive( IN IXML_Node * n, IN char *tagname, OUT IXML_NodeList ** list ) { const char *name; if( n != NULL ) { if( ixmlNode_getNodeType( n ) == eELEMENT_NODE ) { name = ixmlNode_getNodeName( n ); if( strcmp( tagname, name ) == 0 || strcmp( tagname, "*" ) == 0 ) { ixmlNodeList_addToNodeList( list, n ); } } ixmlNode_getElementsByTagNameRecursive( ixmlNode_getFirstChild ( n ), tagname, list ); ixmlNode_getElementsByTagNameRecursive( ixmlNode_getNextSibling ( n ), tagname, list ); } }
void ixmlNode_getElementsByTagName( IXML_Node *n, const char *tagname, IXML_NodeList **list) { const char *name; assert(n != NULL && tagname != NULL); if (ixmlNode_getNodeType(n) == eELEMENT_NODE) { name = ixmlNode_getNodeName(n); if (strcmp(tagname, name) == 0 || strcmp(tagname, "*") == 0) { ixmlNodeList_addToNodeList(list, n); } } ixmlNode_getElementsByTagNameRecursive(ixmlNode_getFirstChild(n), tagname, list); }