libxml如何获取子属性

时间:2013-11-20 14:37:07

标签: c++ libxml2

如何获得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

2 个答案:

答案 0 :(得分:1)

您正在使用xmlGetProp(),它检索当前节点的属性值,但“info”是“子”节点的子项,而不是属性。您应该使用的是“info”节点上的xmlNodeGetContent()。

答案 1 :(得分:0)

它看起来像印刷错误。你应该使用 (const xmlChar *)"child")代替(const xmlChar *)"cild")