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