/*================================================================
*   ixmlNode_getElementsByTagNameNSRecursive
*	    Internal function to parser.	
*		
*
*=================================================================*/
void
ixmlNode_getElementsByTagNameNSRecursive( IN IXML_Node * n,
                                          IN char *namespaceURI,
                                          IN char *localName,
                                          OUT IXML_NodeList ** list )
{
     DOMString nsURI;
     DOMString name;

    if( n != NULL ) {
        if( ixmlNode_getNodeType( n ) == eELEMENT_NODE ) {
            name = ixmlNode_getLocalName( n );
            nsURI = ixmlNode_getNamespaceURI( n );

            if( ( name != NULL ) && ( nsURI != NULL ) &&
                ( strcmp( namespaceURI, nsURI ) == 0
                  || strcmp( namespaceURI, "*" ) == 0 )
                && ( strcmp( name, localName ) == 0
                     || strcmp( localName, "*" ) == 0 ) ) {
                ixmlNodeList_addToNodeList( list, n );
            }
        }

        ixmlNode_getElementsByTagNameNSRecursive( ixmlNode_getFirstChild
                                                  ( n ), namespaceURI,
                                                  localName, list );
        ixmlNode_getElementsByTagNameNSRecursive( ixmlNode_getNextSibling
                                                  ( n ), namespaceURI,
                                                  localName, list );
    }

}
Пример #2
0
Файл: node.c Проект: rxwen/pupnp
/*!
 * \brief
 */
static void ixmlNode_getElementsByTagNameNSRecursive(
    /*! [in] . */
    IXML_Node *n,
    /*! [in] . */
    const char *namespaceURI,
    /*! [in] . */
    const char *localName,
    /*! [out] . */
    IXML_NodeList **list)
{
    const DOMString nsURI;
    const DOMString name;

    if (n != NULL) {
        if (ixmlNode_getNodeType(n) == eELEMENT_NODE) {
            name = ixmlNode_getLocalName(n);
            nsURI = ixmlNode_getNamespaceURI(n);

            if (name != NULL && nsURI != NULL &&
                    (strcmp(namespaceURI, nsURI) == 0 ||
                     strcmp(namespaceURI, "*") == 0 ) &&
                    (strcmp(name, localName) == 0 ||
                     strcmp(localName, "*") == 0)) {
                ixmlNodeList_addToNodeList(list, n);
            }
        }
        ixmlNode_getElementsByTagNameNSRecursive(
            ixmlNode_getFirstChild(n), namespaceURI, localName, list);
        ixmlNode_getElementsByTagNameNSRecursive(
            ixmlNode_getNextSibling(n), namespaceURI, localName, list);
    }
}
Пример #3
0
Файл: node.c Проект: rxwen/pupnp
void ixmlNode_getElementsByTagNameNS(
    IXML_Node *n,
    const char *namespaceURI,
    const char *localName,
    IXML_NodeList **list)
{
    const DOMString nsURI;
    const DOMString name;

    assert(n != NULL && namespaceURI != NULL && localName != NULL);

    if (ixmlNode_getNodeType(n) == eELEMENT_NODE) {
        name = ixmlNode_getLocalName(n);
        nsURI = ixmlNode_getNamespaceURI(n);
        if (name != NULL && nsURI != NULL &&
                (strcmp(namespaceURI, nsURI) == 0 ||
                 strcmp(namespaceURI, "*") == 0) &&
                (strcmp(name, localName) == 0 ||
                 strcmp(localName, "*") == 0)) {
            ixmlNodeList_addToNodeList(list, n);
        }
    }

    ixmlNode_getElementsByTagNameNSRecursive(
        ixmlNode_getFirstChild(n), namespaceURI, localName, list);
}