错误包含XPath查询
问题描述:
我试图解析以下网址: http://rss.cbc.ca/lineup/technology.xml错误包含XPath查询
我的代码是:
$doc = new DOMDocument();
$doc->load("http://rss.cbc.ca/lineup/technology.xml");
echo '<ul class="rss">';
$i = 0;
if(isset($_GET['filter'])){
$xpath = new DOMXPath($doc);
$doc = $xpath->query("item/title[contains(.,'".$_GET['filter']."')] or item/description[contains(.,'".$_GET['filter']."')]");
echo "<p>Filtering news items on '".$_GET['filter']."'</p>";
}
foreach ($doc->getElementsByTagName('item') as $node) {
if($i % 2 == 0)
$class = "even";
else
$class = "odd";
echo '<li class="'.$class.'">';
echo "<h1>".$node->getElementsByTagName('title')->item(0)->nodeValue."</h1>";
echo "<p>".$node->getElementsByTagName('description')->item(0)->nodeValue."</p>";
echo '<a href="'.$node->getElementsByTagName('link')->item(0)->nodeValue.'">Link to story</a>';
echo "</li>";
$i = $i + 1;
}
echo "<ul>";
是我遇到的问题是,如果我指定一个(通过VAR URL)过滤器,当我后来做的foreach下来的页面,我得到一个错误:
Fatal error: Call to undefined method DOMNodeList::getElementsByTagName()
答
你的XPath表达式求值的布尔数据类型(假的,因为你拍
/rss/channel/item[(title|description)[contains(.,'string')]]
答
首先:$xpath->query
返回DOMNodeList其中没有一个方法getElementsByTagName
如果要选择具有title
或description
儿童方含一些字符串,使用这些item
元素h是错误的)
。
第二:您的查询返回title
元素或description
而不是item
。
更改为//item[contains(title,'".$_GET['filter']."')]
感谢您的帮助! – TekiusFanatikus 2010-11-25 18:47:04