📅  最后修改于: 2023-12-03 15:06:25.608000             🧑  作者: Mango
XPath 是一种用于在 XML 文档中导航和选择元素的语言。它是 W3C 组织的标准规范,被广泛应用于 XML 文档的处理和解析中。
XPath 主要用于选择 XML 文档中的节点和属性,以便进行进一步的处理和操作。它可以用于以下场景:
XPath 的基本语法包括路径表达式和节点测试,可以使用以下符号:
XPath的表达式可以使用以下节点测试:
示例:
/bookstore/book[1] 选取 bookstore 子元素的第一个 book 元素
/bookstore/book[last()] 选取 bookstore 子元素的最后一个 book 元素
/bookstore/book[last()-1] 选取 bookstore 子元素的倒数第二个 book 元素
/bookstore/book[position()<3] 选取 bookstore 子元素的前两个 book 元素
//title[@lang] 选取所有带有 lang 属性的 title 元素
//title[@lang='en'] 选取所有 lang 属性值为 en 的 title 元素
//title[contains(text(),'Coding')] 选取所有包含文本 Coding 的 title 元素
XPath 最常用的就是在 XML 文档中进行数据的提取和筛选。它可以与其他工具和库进行集成,如基于 Java 的 DOM 和 SAX 解析器、XPath 解析器、XSLT 转换器等。
下面是一个 Java 中使用 XPath 解析 XML 数据的示例代码:
// 创建 XPath 对象
XPath xpath = XPathFactory.newInstance().newXPath();
// 编译 XPath 表达式
XPathExpression expr = xpath.compile("//book[price>35]/title/text()");
// 将 XML 文档加载到 Document 对象中
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("bookstore.xml"));
// 按 XPath 表达式提取符合条件的数据
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
// 输出结果
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
XPath 是一种强大的 XML 语言,它可以用于选取和操作 XML 文档中的节点和属性。学会 XPath,能够更加高效地处理和解析 XML 数据。