[xml] Change default namespace to prefixed namespace



Hi all,

I need to transform the default namespace of a document to a prefixed
one. Is it ok to assign a string to the namespace, or do I need to
create a new namespace and replace it in the document?

This is the function I used to change the namespace:
        xmlDocPtr p = xmlParseFile( argv[ 1 ] );
        if( NULL == p )
        {
                fprintf( stderr, "Datei %s kann nicht geöffnet werden\n", argv[ 1 ] );
                return 1;
        }
        xmlNodePtr root = xmlDocGetRootElement( p );
        assert( root );
        xmlNsPtr nsp = root->ns;
        while( NULL != nsp )
        {
                if ( NULL == nsp->prefix )
                {
                        nsp->prefix = xmlMemoryStrdup( "hc" );
                        break;
                }
                nsp = nsp->next;
        }
        if( NULL != nsp )
        {
                for( xmlNodePtr c = root->children; NULL != c; c = c->next )
                {
                        if ( XML_ELEMENT_NODE == c->type )
                        {
                                for( xmlAttrPtr p = c->properties; NULL != p; p = p->next )
                                {
                                        if( NULL == p->ns )
                                        {
                                                p->ns = nsp;
                                        }
                                }
                        }
                }
        }

TIA
Rudi

-- 
GPG encrypted mails preferred.
GPG verschlüsselte Mails bevorzugt.
---> http://chaosradio.ccc.de/media/ds/ds085.pdf Seite 20 <----



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]