📜  什么是XPath(1)

📅  最后修改于: 2023-12-03 15:06:25.608000             🧑  作者: Mango

什么是XPath

XPath 是一种用于在 XML 文档中导航和选择元素的语言。它是 W3C 组织的标准规范,被广泛应用于 XML 文档的处理和解析中。

XPath 的作用

XPath 主要用于选择 XML 文档中的节点和属性,以便进行进一步的处理和操作。它可以用于以下场景:

  • 从 XML 文档中选取需要的节点和属性。
  • 在多个 XML 文档中选择相应的节点和属性。
  • 过滤和筛选节点。
  • 为 XML 文档中的节点建立关联。
XPath 的语法

XPath 的基本语法包括路径表达式和节点测试,可以使用以下符号:

  • /:根节点。
  • .:当前节点。
  • ..:父节点。
  • //:选择所有符合条件的节点。
  • *:选择所有子节点。
  • @:选择节点属性。

XPath的表达式可以使用以下节点测试:

  • nodename:选择指定名称的节点。
  • /:选取根节点,也就是XML文档中的最顶层节点。
  • //:选取任意节点。
  • .:选择当前节点。
  • ..:选择当前节点的父节点。
  • @:选择属性。

示例:

/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 的应用

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 数据。