以下是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"
,它就可以了。为什么会这样?谢谢!
答案 0 :(得分:3)
$xpath->registerNamespace("s",
"http://www.sitemaps.org/schemas/sitemap/0.9");
然后在XPath中使用它:
$tags = $xpath->query('//s:url[@id="first_url"]');
答案 1 :(得分:3)
这是因为命名空间。这是你可以忽略名称空间的方式:
Xpath 1.0:
//*[local-name()="url"][@id="first_url"]
Xpath 2.0:
//*:url[@id="first_url"]