c语言编程笔录

首页 >   > 笔记大全

笔记大全

PHP 爬虫怎么使用 XPath 解析 XML 文档

更新时间:2023-07-11

什么是 XPath?

XPath 是一种在 XML 文档中定位元素和属性的语言。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这里的节点可以包括元素、属性、文本等,而节点集则是包含多个节点的集合。


// 选择所有节点
$xmlDoc->xpath("//*");
// 选择所有元素节点的 "name" 属性
$xmlDoc->xpath("//@name");

如何使用 XPath 解析 XML 文档?

使用 PHP 解析 XML 文档的步骤通常是,首先将 XML 文档加载到内存中,然后使用 DOM 对象对其进行操作。XPath 可以为我们提供简洁清晰的 DOM 操作方式。下面展示一个使用 XPath 解析 XML 文档的示例:


$xmlDoc = new DOMDocument();
$xmlDoc->load("test.xml"); // 加载 XML 文档

$xpath = new DOMXPath($xmlDoc);
$books = $xpath->query("//book"); // 获取所有 book 元素

foreach ($books as $book) {
    $authors = $book->getElementsByTagName("author");
    foreach ($authors as $author) {
        // 输出 author 元素的文本内容
        echo $author->nodeValue . "
"; } }

XPath 如何选择特定节点?

XPath 的选择器包括节点名称、路径、属性等。下面是一些常见的选择方式:


// 选取 id 属性为 123 的节点
$xmlDoc->xpath("//*[@id='123']");
// 选取所有带有 class 为 "highlight" 的 p 元素
$xmlDoc->xpath("//p[@class='highlight']");

XPath 与 CSS 选择器的对比

对于有经验的前端开发者来说,CSS 选择器可能更加熟悉。XPath 与 CSS 选择器类似,但不完全相同。XPath 的选择器语法更加丰富,但相应的学习成本也更高。下面是一些 XPath 选择器与 CSS 选择器的对比:


// XPath 示例
$xmlDoc->xpath("//div[@class='container']/h2");
// 对应的 CSS 选择器
.containter > h2