On Sat, Jan 2, 2010 at 6:39 PM, Andreas Wagner <[email protected]>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
_______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
