使用XPATH查找xml文档节点
来源:互联网 发布:网络小说 毒 知乎 编辑:程序博客网 时间:2024/06/06 13:24
简而言之,XPATH之于xml,好比SQL之于关系数据库。要在一个复杂的xml文档中查找所需的信息,XPATH简直是必不可少的工具。XPATH语法简单易学,并且有一个很好的官方教程,见http://www.zvon.org/xxl/XPathTutorial/Output_chi/introduction.html。这个站点的XML各种教程齐全,并且有包括中文在内的各国语言版本,真是让我喜欢到非常!
使用XPATH之前,必须首先熟悉几个数据类型和函数,它们是使用XPATH的前提。在libxml2中使用Xpath是非常简单的,其流程如下:
l 定义一个XPATH上下文指针xmlXPathContextPtr context,并且使用xmlXPathNewContext函数来初始化这个指针;
l 定义一个XPATH对象指针xmlXPathObjectPtr result,并且使用xmlXPathEvalExpression函数来计算Xpath表达式,得到查询结果,将结果存入对象指针中;
l 使用result->nodesetval得到节点集合指针,其中包含了所有符合Xpath查询结果的节点;
l 使用xmlXPathFreeContext释放上下文指针;
l 使用xmlXPathFreeObject释放Xpath对象指针;
具体的使用方法可以看XpathForXmlFile.cpp的这一段代码,其功能是查找符合某个Xpath语句的对象指针:
一个完整的使用Xpath的例子在代码XpathForXmlFile.cpp中,它查找一个xml文件中符合"/root/node2[@attribute='yes']"语句的结果,并且将找到的节点的属性和内容打印出来。编译链接命令如下:
nmake TARGET_NAME=XpathForXmlFile
执行方式如下:
XpathForXmlFile.exe CreatedXml.xml
观察结果可以看出找到了一个节点,即root下面node2节点,它的attribute属性值正好等于yes。更多关于Xpath的内容可以参考XPATH官方手册。只有掌握了XPATH,才掌握了使用大型XML文件的方法,否则每寻找一个节点都要从根节点找起,会把人累死。
使用XPATH之前,必须首先熟悉几个数据类型和函数,它们是使用XPATH的前提。在libxml2中使用Xpath是非常简单的,其流程如下:
l 定义一个XPATH上下文指针xmlXPathContextPtr context,并且使用xmlXPathNewContext函数来初始化这个指针;
l 定义一个XPATH对象指针xmlXPathObjectPtr result,并且使用xmlXPathEvalExpression函数来计算Xpath表达式,得到查询结果,将结果存入对象指针中;
l 使用result->nodesetval得到节点集合指针,其中包含了所有符合Xpath查询结果的节点;
l 使用xmlXPathFreeContext释放上下文指针;
l 使用xmlXPathFreeObject释放Xpath对象指针;
具体的使用方法可以看XpathForXmlFile.cpp的这一段代码,其功能是查找符合某个Xpath语句的对象指针:
xmlXPathObjectPtr getNodeSet(xmlDocPtr doc, const xmlChar *szXpath){ xmlXPathContextPtr context; //XPATH上下文指针 xmlXPathObjectPtr result; //XPATH对象指针,用来存储查询结果 context = xmlXPathNewContext(doc); //创建一个XPath上下文指针 if (context == NULL) { printf("context is NULL"n"); return NULL; } result = xmlXPathEvalExpression(szXpath, context); //查询XPath表达式,得到一个查询结果 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; }
一个完整的使用Xpath的例子在代码XpathForXmlFile.cpp中,它查找一个xml文件中符合"/root/node2[@attribute='yes']"语句的结果,并且将找到的节点的属性和内容打印出来。编译链接命令如下:
nmake TARGET_NAME=XpathForXmlFile
执行方式如下:
XpathForXmlFile.exe CreatedXml.xml
观察结果可以看出找到了一个节点,即root下面node2节点,它的attribute属性值正好等于yes。更多关于Xpath的内容可以参考XPATH官方手册。只有掌握了XPATH,才掌握了使用大型XML文件的方法,否则每寻找一个节点都要从根节点找起,会把人累死。
- 使用XPATH查找xml文档节点
- 使用XPATH查找xml文档节点
- 使用XPATH查找xml文档节点
- java使用XPath查找xml节点
- 使用Xpath查询xml文档节点数据
- 使用XPath查找XML文档中的信息
- XPath 使用路径表达式来选取 XML 文档中的节点或节点集
- XPath 使用路径表达式来选取 XML 文档中的节点或节点集
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点 .
- Dom4j使用Xpath语法读取xml节点 .
- Dom4j使用Xpath语法读取xml节点
- Dom4j使用Xpath语法读取xml节点
- dom4j的xpath查找xml的指定节点
- dom4j的xpath查找xml的指定节点
- xml文档节点的获取--dom4j的延伸xpath知识
- 使用XPath提取xml文档数据
- unix网络编程(笔记一)
- Maven常用命令
- 免费 SVN 服务器收集
- curl
- UVA 题目11292 Dragon of Loowater
- 使用XPATH查找xml文档节点
- 实验验证kvm VM 线程机制
- C#Winform开发,Listview根据文件路径或扩展名显示系统文件图标
- 两种改变matlab默认工作目录的方法
- ATL持续化之IPersistPropertyBag
- 用函数的方法来显示数据库的记录集div
- java中equals和==的区别
- Java堆内存的10个要点
- java环境变量配置