XPath简介
XPath(XML Path Language)是一种用于在XML文档中查找信息的语言。它是XSLT(可扩展样式表语言转换)中不可或缺的一部分,也是XML解析中的重要工具。XPath允许开发者精确地定位XML文档中的特定部分,从而进行数据的提取、转换或操作。
XPath基本语法
XPath的基本语法由两部分组成:轴和表达式。
轴
轴定义了相对于当前节点(context node)的节点关系。以下是一些常见的轴:
child
:选择当前节点的直接子节点。parent
:选择当前节点的父节点。ancestor
:选择当前节点的所有祖先节点。attribute
:选择当前节点的属性。
表达式
表达式用于选择XML文档中的节点。以下是一些常用的表达式:
element
:选择指定名称的元素。text
:选择元素的文本内容。comment
:选择注释。
XPath核心技巧
1. 使用通配符
通配符*
可以匹配任何元素名称,而@*
可以匹配任何属性。
//book/* 匹配book元素的任何子元素
//book/@* 匹配book元素的任何属性
2. 使用相对路径
相对路径以/
开头,从根节点开始选择。
//book/title 匹配根节点下所有book元素的title子元素
3. 使用绝对路径
绝对路径以/
开头,从根节点开始选择。
/book/title 匹配根节点下所有book元素的title子元素
4. 使用谓词
谓词用于选择满足特定条件的节点。
//book/title[text()='Effective XML'] 选择标题为'Effective XML'的book元素的title子元素
5. 使用路径表达式
路径表达式允许你组合多个轴和表达式来选择节点。
//book//author[@id='a1'] 选择根节点下所有book元素中,拥有id为'a1'的author子元素的路径
6. 使用函数
XPath提供了一组函数,用于执行各种操作,如字符串、数字和日期操作。
string-length(text()) 返回文本内容的长度
substring-before(text(), '-') 返回文本内容中第一个'-'之前的部分
XPath实战案例
以下是一个使用XPath从XML文档中提取信息的示例:
<?xml version="1.0"?>
<books>
<book>
<title>Effective XML</title>
<author id="a1">Erik T. Ray</author>
</book>
<book>
<title>XML Bible</title>
<author id="a2">John Doe</author>
</book>
</books>
使用XPath提取所有书名:
//books/book/title
使用XPath提取作者名:
//books/book/author
使用XPath提取具有特定ID的作者名:
//books/book/author[@id='a1']
总结
XPath是处理XML数据的重要工具,通过掌握XPath的核心技巧,你可以轻松地解锁XML数据之美。在XSLT和XML解析中,熟练运用XPath将使你的工作更加高效和便捷。