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进行查找相关推荐

  1. python--通过xpath相对节点位置查找元素(续)

    之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...

  2. python xpath定位元素方法_python--通过xpath相对节点位置查找元素(续)

    之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...

  3. libxml2 c库使用

    ##libxml2库 1.读取一个文件到内存 xmlParseFile和xmlReadFile:xmlReadFile() is a bit more powerful as it is able t ...

  4. java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath

    xpath 全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索 XPath 的选择功能十分强大,它提供了非常 ...

  5. 爬虫文档学习 xpath bs4 selenium scrapy...

    爬虫 一.介绍 1.什么是爬虫 1.1 爬虫(Spider)的概念 爬虫用于爬取数据, 又称之为数据采集程序. 爬取的数据来源于网络,网络中的数据可以是由Web服务器(Nginx/Apache).数据 ...

  6. QTP的那些事--XPath的重要使用

    开始的时候以为selenium比较的好,毕竟是开源的.有众多的人的后台支持.但是后来发现它的好处在于它的对象的识别是通过xpath的方式,但是QTP现在也是支持xpath了,这个无疑是重要的一个地方. ...

  7. 在 Perl 中利用 DOM 和 XPath 对 XML 进行有效处理

    文在对几个大型 XML 项目进行分析的基础上研究了如何有效且高效地使用 DOM.开发人员兼作者 Tony Daruger 提供了一组用法样式和一个函数库,以使 DOM 强壮和易用.虽然 DOM 提供了 ...

  8. Python-爬虫(xpath数据解析,爬取信息实战)

    文章目录 1.xpath常见筛选方式 谓语 2.爬取信息实战 1.xpath常见筛选方式 测试网页源代码 <!DOCTYPE html> <html lang="en&qu ...

  9. Java基础加强重温_13:XML(可拓展标记语言)、XML语法、XML约束、XML解析(Dom4j,JAXP)、Dom4j基本使用、Xpath表达式(XML路径语言)、XML解析综合案例

    摘要 Java基础加强重温_13: XML(可拓展标记语言.作用:小型数据库.框架配置文件.不同平台数据交换). XML语法(文档.标签/元素.属性.注释.转义字符.CDTA区) XML约束(DTD约 ...

最新文章

  1. python测试程序的qps和响应时间代码_Python并发请求下限制QPS(每秒查询率)的实现代码...
  2. 如何批量给数字前面加半角单引号[转]
  3. dwz ajax session超时跳转登录页(struts2自定义拦截器)
  4. [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
  5. 输入3个数a,b,c,按大小顺序输出
  6. python 组合优化 回撤最小_【策略回测】多因子搭配组合优化(内附bonus)
  7. springboot+activiti工作流mybatis冲突解决办法
  8. 服务器接收不到信号,信号(SIGTERM)不被Windows上的subprocess接收
  9. WordPress 简约主题 NDNAV 网址导航网站模版
  10. 学生信息管理系统结构图
  11. 安装 Office 2010 错误 error 1935和数据库以及安卓路线
  12. 如何设计一个超级牛逼的 Feed 流系统
  13. JavaScript问题:一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米
  14. 操作系统P/V操作(V操作中的典型理解偏差)
  15. python signal滤波器使用说明
  16. GitHub快速学习-一
  17. 10月各国最新签证及入境政策汇总
  18. MySQL 员工信息查询
  19. 六度短网址服务平台原理
  20. 安装gensim库的方法最终解答!

热门文章

  1. ES集群新增节点无法加入集群 timed out while waiting for initial discovery state - timeout: 30s
  2. 【千字分析】剑指 Offer 46. 把数字翻译成字符串
  3. 【三次优化】剑指 Offer 35. 复杂链表的复制
  4. 问题描述: 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。 规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将n堆石子
  5. 购物车模块如何进行测试?
  6. ajax给data赋值,vue 2.0 methods 里ajax生成的数据,怎么赋值给data
  7. 怎么测试服务器端口是否对外开放_从零开始内建你的安全测试流程
  8. ThinkPHP php 仿千图网源码_PHP微信表白墙源码 基于ThinkPHP框架开发
  9. seo优化源码_武汉seo公司关键词SEO优化实战记录,1个月三个站在首页
  10. python linux解密zip_Python Linux系统管理之使用Python管理压缩包