libxml2用xpath进行查找
xml文檔
<?xml version="1.0" encoding="UTF-8"?>
<radios>
? ? <radio>
? ? ? ? <name>Bayern</name>
? ? ? ? <url>http://mp3.webradio.antenne.de:80</url>
? ? ? ? <classification>
? ? ? ? ? ? <area>usa</area>
? ? ? ? ? ? <sytle>music</style>
? ? ? ? </classification>
? ? </radio>
? ? <radio>
? ? ? ? <name>DEU-Antenne Bayern</name>
? ? ? ? <url>http://test</url>
? ? </radio>
</radios>
上代碼
static xmlXPathObjectPtr getNodeset(xmlDocPtr doc, const xmlChar *xpath) {xmlXPathContextPtr context;xmlXPathObjectPtr result;context = xmlXPathNewContext(doc);if (context == NULL) {printf("context is NULL\n");return NULL;}result = xmlXPathEvalExpression(xpath, context);xmlXPathFreeContext(context);if (result == NULL) {printf("xmlXPathEvalExpression return NULL\n");return NULL;}if (xmlXPathNodeSetIsEmpty(result->nodesetval)) {xmlXPathFreeObject(result);printf("nodeset is empty\n");return NULL;}return result; }playlistDoc為xmlDocPtr類型.
xmlChar *xpath = BAD_CAST("/radios/radio[name='DEU-Antenne Bayern']");//關鍵點 xmlXPathObjectPtr app_result = getNodeset(playlistDoc, xpath); if (app_result == NULL) {xmlNodeSetPtr nodeset = app_result->nodesetval;xmlNodePtr cur;for (i=0; i< nodeset->nodeNr; i++) {cur = nodeset->nodeTab[i];cur = cur->xmlChildrenNode;while (cur != NULL) {if (!xmlStrcmp(cur->name, (const xmlChar *)"name"))printf("%s\n", ((char *)XML_GET_CONTENT(cur->xmlChildrenNode)));else if (!xmlStrcmp(cur->name, (const xmlChar *)"url"))printf("%s\n", ((char *)XML_GET_CONTENT(cur->xmlChildrenNode)));cur = cur->next;}}xmlXPathFreeObject(app_result); }輸出:
DEU-Antenne Bayern
http://mp3.webradio.antenne.de:80
DEU-Antenne Bayern
http://test
xmlChar *xpath = BAD_CAST("/radios/radio[name='DEU-Antenne Bayern']");改成
xmlChar *xpath = BAD_CAST("/radios/radio[name='DEU-Antenne Bayern' and url='http://mp3.webradio.antenne.de:80']"); DEU-Antenne Bayern輸出:
http://mp3.webradio.antenne.de:80
更多xpath的寫法可參考:
http://www.w3.org/TR/xpath/
http://www.w3school.com.cn/xpath/index.asp
轉自:https://blog.csdn.net/zmlovelx/article/details/8107002
總結
以上是生活随笔為你收集整理的libxml2用xpath进行查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg基础使用
- 下一篇: Git操作之克隆某一个特定的远程分支