libxml2用xpath进行查找
来源:互联网 发布:杭州十大淘宝拍摄基地 编辑:程序博客网 时间:2024/06/05 16:44
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> <style>music</style> </classification> </radio> <radio> <name>DEU-Antenne Bayern</name> <url>http://mp3.webradio.antenne.de:80</url> </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) { printf("app_result is NULL\n"); return; } int i = 0; xmlChar *value; if(app_result) { 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
作者:帅得不敢出门 c++哈哈堂:31843264
- libxml2用xpath进行查找
- libxml2 xpath namespace
- libxml2编译及API,XPath操作总结
- libxml2库的安装,xpath的使用
- C#用xpath查找某节点
- 用XPath对Html进行解析
- libxml2 如何进行字符串处理
- XPath 元素查找方法
- 元素查找(xpath)
- 利用JDOM及XPath对XML文件进行创建、查找、增加、删除、保存等操作
- Windows下安装libxml2并在Python中使用XPath
- Windows下安装libxml2并在Python中使用XPath
- iOS: libxml2 xpath 函数调用示例, 网页解析
- [libxml2]_[XML处理]_[使用libxml2的xpath特性修改xml文件内容]
- 利用libxml2 创建,修改,查找xml
- libxml2使用解析XML和查找
- 用JDOM进行XPATH查询XML的例子
- 用dom4j+xpath的方式对xml文件进行读取
- Android实战技巧:如何在ScrollView中嵌套ListView
- Kamailio安装指南
- php在linux终端输出带颜色
- emacs初学 命令备查
- 黑马程序员--多线程
- libxml2用xpath进行查找
- C#序列化的一些应用
- 11级_Java_曹建波 10.24 response2
- 程序员面试100题之一:对称字符串的最大长度
- GDB的使用
- mastudio 语法和print
- 报表中从属值集参数
- iphone--关于iphone多国语言设置
- linux命令