php - 将 xPath 用于 sitemap.xml

标签 php xml xpath sitemap

这是 XML 文件内容:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url id="first_url">
<loc>http://example.com</loc>
<lastmod>2014-05-21</lastmod>
</url>
</urlset>

PHP 代码如下:

<?php
$dom = new DOMDocument('1.0', 'utf-8');
$dom->Load('sitemap.xml');
$xpath = new DOMXPath($dom);        
$tags = $xpath->query('//url[@id="first_url"]');
foreach($tags as $tag)
    print $tag->getAttribute("id")."<br/>";
?>

此代码无效。但是,如果我从文件中删除 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ,它就可以工作。为什么会这样?谢谢!

最佳答案

是因为命名空间。您可以通过以下方式忽略 namespace :

Xpath 1.0:

//*[local-name()="url"][@id="first_url"]

Xpath 2.0:

//*:url[@id="first_url"]

关于php - 将 xPath 用于 sitemap.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783439/

相关文章:

java - XPath 使用空节点

python - 如何在使用selenium时每次在scrapy xpath中更新新的页面源?

javascript - 如何在当前表中添加数据表

PHP注册表: Make the inputs with red borders if there is an error

php - 还包括 MySQL SELECT 查询中的 NULL 行

node.js - 如何在 Node.js 中从 xml 中抓取 url?

java - 使用 XPath 获取父元素的同级和后续文本

php - Wordpress 页面不显示样式表

java - android中带圆角的按钮

java - Android - 使用简单 XML 仅从 XML 文件中获取一些元素