错误包含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')]] 
+0

感谢您的帮助! – TekiusFanatikus 2010-11-25 18:47:04

首先:$xpath->query返回DOMNodeList其中没有一个方法getElementsByTagName如果要选择具有titledescription儿童方含一些字符串,使用这些item元素h是错误的)

第二:您的查询返回title元素或description而不是item

更改为//item[contains(title,'".$_GET['filter']."')]