2010-11-25 4 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>"; 

난 데 문제는 내가 지정하는 경우이다 내가 페이지 아래로 나중에 foreach 문을 수행 할 때 (A URL의 VAR을 통해) 필터링, 오류가 발생합니다 :

귀하의 XPath 표현식은 부울 데이터 유형 (false로 평가하여 팻 때문입니다

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

답변

2

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

감사합니다. – TekiusFanatikus

+0

@ TeekiusFanatikus : 당신은 건강합니다. –

+0

또한 xml 파일에서 검색 할 수 있습니다. :) –

0

첫째 : : 방법 getElementsByTagName이없는 DOMNodeList을 반환 $xpath->query 일부 문자열을 사용 containg title 또는 description 아이를 갖는 item 요소를 선택하려면 시간이

) 잘못된 것입니다.

두 번째 : title 요소 또는 description 요소를 반환하고 item 요소는 반환하지 않습니다.

로 변경하십시오. //item[contains(title,'".$_GET['filter']."')]

관련 문제