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 = ;
xmlChar *value;
if(app_result)
{
xmlNodeSetPtr nodeset = app_result->nodesetval;
xmlNodePtr cur; for (i=; 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

更多xpath的写法可参考

http://www.w3.org/TR/xpath/

http://www.w3school.com.cn/xpath/index.asp

libxml2用xpath进行查找的更多相关文章

  1. [libxml2]_[XML处理]_[使用libxml2的xpath特性修改xml文件内容]

    场景: 1.在软件需要保存一些配置项时,使用数据库的话比较复杂,查看内容也不容易.纯文本文件对utf8字符支持也不好. 2.这时候使用xml是最佳选择,使用跨平台库libxml2. 3.基于xpath ...

  2. libxml2的xpath检索中文

    ZC: xmlXPathEvalExpression(...) 当 xpath的字符串中 包含中文的时候,返回NULL,暂时不知道该怎么处理了... ZC: 下面是测试的一些代码/文件,留着以后再研究 ...

  3. xpath元素查找提示is not clickable

    1.用xpath可以在chrome找到 $x("//mandatory-config-dialog[@is-show='isShowMandatoryConfig']/div/div[2]/ ...

  4. WebDriver 在使用 CSS Selector 与 XPath 在查找元素时如何取舍

    开发在做Web系统时,用的是css div划分层,使用jQuery 选取元素.

  5. selenium(二)查找定位目标 ID XPATH CSS 操作目标

    简介: 我们只打开一个页面是没有什么意义的. 尽管你可以get很多次. selenium可以做的更多,比如找到百度的搜索框,输入我们要搜索的内容,再用鼠标点击搜索按钮,再把搜索结果提取出来…… 这篇文 ...

  6. 【python】lxml查找属性为指定值的节点

    假设有如下xml在/home/abc.xml位置 <A> <B id=" name="apple"/> <B id=" name= ...

  7. 5.5.8 XPath定位

    1.什么是XPath XPath定位方式是自动化测试定位技术中的必杀技,几乎可以解决所有的定位难题.它是XML Path语言的缩写,主要用于在XML 文档中选择文档中的节点.基于XML树状文档结构,X ...

  8. XML, XPath, Xslt及解析/Parse

    XML及解析/Parse "Programming with libxml2 is like the thrilling embrace of an exotic stranger.&quo ...

  9. 自学Xpath的几个例子

    Xpath可以对XML文件中的信息进行查找,并对XML文件树形结构进行遍历.详细语法请转:http://www.w3school.com.cn/xpath/index.asp 例子:利用在JavaSc ...

随机推荐

  1. 【Python】小括号过滤后的盲注

    0x00   环境搭建 sqli-labs第八关,简单修改下源代码,加入下面一行代码 $id=preg_replace('/\(|\)/', "",$id); //过滤小括号 0x ...

  2. PIE SDK图像旋转

    1.算法功能简介 图像旋转可使图像以中心点为轴沿特定方向旋转指定的角度. PIESDK支持算法功能的执行,下面对图像旋转算法功能进行介绍. 2.算法功能实现说明 2.1 实现步骤 第一步 算法参数设置 ...

  3. js 中 forEach 和 map

    共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名 ...

  4. vue-watch deep 和 immediate

    watch 是一个对象,对象就有键,有值. 值可以是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是变化后的值,第二个是变化前的值. 值也可以是函数名:不过这个函数名要用单 ...

  5. 转载收藏(js数组方法大全)

    js数组方法大全 JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Arra ...

  6. PV和UV代表什么(转)

    PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.  高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这 ...

  7. STL:vector用法总结

    一:介绍 vector是C++标准模板库,是一个容器,底层是数组,为连续内存.命名空间为std,所属头文件为<vector>   注意:不是<vector.h>vector存储 ...

  8. 项目搭建系列之三:SpringMVC框架下使用Ehcache对象、数据缓存

    注明:该文章为以前写的文章,这里只更改了标题,无GitHub源码下载. 一.准备工作 如果已经成功搭建SpringMVC环境,那么就可以进入Ehcache的准备工作了.1.下载jar包    Ehca ...

  9. My eclipse jdk unbound的解决

    project --> properties --> java build path --> 双击出错的jdk --> alternate jre --> install ...

  10. XtraTabPage右键菜单(关闭当前页、关闭其它页、所有关闭的实现)

    实现的需求: 用户习惯是一个不可忽略的东西,默认这版的dx的tab也木有右键操作,但用户习惯操作如浏览器都有右键关闭功能,故这里实现先dx的该功能 技术实现: (1)在winform的相应控件内,拖入 ...