2010-11-25 23 views
1

XPathクエリに含まれていエラーは、私は、次のURLを解析しようとしている

$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>"; 

私がいる問題は、私が指定した場合ということです(URLのVARを介して)フィルタ、私は後でページの下のforeachを行うとき、私はエラーを取得する:あなたのパットので

Fatal error: Call to undefined method DOMNodeList::getElementsByTagName()

答えて

2

あなたのXPath式は、偽(ブールデータ型に評価されます

/rss/channel/item[(title|description)[contains(.,'string')]] 
+0

ありがとうございました! – TekiusFanatikus

+0

@ TeekiusFanatikus:あなたは幸せです。 –

+0

xmlファイルの検索にも使用できます:) –

0

まず:メソッドgetElementsByTagNameを持っていませんDOMNodeListを返し$xpath->queryあなたには、いくつかの文字列、使用をcontaing titledescription子どもを持つものitemの要素を選択したい場合は時間が

)間違っています。

2番目:title要素またはではなく、という要素が返されます。

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

関連する問題