如何获得value
的{{1}}?例如xml:
child atribute
我如何得到<root>
<child>
<info>Lala</info>
</child>
</root>
?我试试这个(但它不起作用:())
Lala
当我启动此代码时,我得不到void parsePackage (xmlDocPtr doc, xmlNodePtr cur) {
xmlChar *key;
xmlChar *uri;
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"child"))) {
key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
uri = xmlGetProp(cur, (const xmlChar *)"info");
printf("Info: %s\n", uri);
xmlFree(key);
}
cur = cur->next;
}
return;
}
void parseDoc() {
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile("test.xml");
if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc);
return;
}
if (xmlStrcmp(cur->name, (const xmlChar *) "root")) {
fprintf(stderr,"document of the wrong type, root node != package");
xmlFreeDoc(doc);
return;
}
parsePackage(doc, cur);
xmlFreeDoc(doc);
return;
}
,我得到LaLa
。
答案 0 :(得分:1)
您正在使用xmlGetProp(),它检索当前节点的属性值,但“info”是“子”节点的子项,而不是属性。您应该使用的是“info”节点上的xmlNodeGetContent()。
答案 1 :(得分:0)
(const xmlChar *)"child")
代替(const xmlChar *)"cild")