Re: [xml] namespace problem



Hi Emmanuel,

thx for ur answer, but it is still the same problem. I must be in the right node (correct line), but i do not get the attributes :-(



Regards

2010/1/3 Emmanuel Rodriguez <emmanuel rodriguez gmail com>


On Sat, Jan 2, 2010 at 6:39 PM, Andreas Wagner <andreaswagner7 gmail com> wrote:
Hi folks,

i have an xml document like this:

<?xml version="1.0" ...?>
<root xmlns:Value="http://dummies.org">
   <header>
       <variables>
           <...../>
           <...../>
       </variables>
       <const>
            <.../>
            <.../>
       </const>
       <parameters>
            <param name="xxx">
                 <Value:scalar name="xxx" type="BOOL"/>
            </param>
            <param name="yyy">
                 <Value:scalar name="yyy" type="BOOL"/>
            </param>
       </parameters>
   </header>
   <body>
   </body>
</root>

I can read the variables and the constants in the header, but when i want to read the Value:scalar name and type i get nothing. I read the correct lines, but the content is empty (thats normal) but the name of this element is "text".
When the current node is param i try to get the values with:

xmlChar *name;
cur = cur->xmlChildrenNode;
if (xmlGetNsProp(cur,(const xmlChar*) "name", (const xmlChar*) "Value"){
    name = xmlGetNsProp(cur,(const xmlChar*) "name", (const xmlChar*) "Value");
    printf("name: %s \n,name);
}
The second parameter of xmlGetNsProp has to be the URI of the namespace and not the prefix. Use this instead:
xmlGetNsProp(cur,(const xmlChar*) "name", (const xmlChar*) "http://dummies.org");

Prefixes in namespaces are arbitrary and not always available (i.e. xmlns="http://dummies.org" has no prefix yet has a namespace). The only way for matching nodes within the same namespace is to compare the URI. It can be a bit confusing sometimes :)

--
Emmanuel Rodriguez



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