2015-01-12 68 views
0

我只想得到有兒童<category>Lifestyle</category>的新聞。但我的代碼目前僅獲得第一類,我想有代碼來搜索所有在一個<item><category>我寫了這個代碼PHP至今:從XML條目篩選更多類別

<?php 
$html = ""; 
$url = "http://www.nu.nl/rss"; 
$xml = simplexml_load_file($url); 
for($i = 0; $i < 10; $i++){ 

    $title = $xml->channel->item[$i]->title; 
    $link = $xml->channel->item[$i]->link; 
    $description = $xml->channel->item[$i]->description; 
    $pubDate = $xml->channel->item[$i]->pubDate; 
    $category = $xml->channel->item[$i]->category; 

    if(strpos($category, 'Binnenland')!==false) { 
    $html .= "<a href='$link'><h3>$title</h3></a>"; 
    $html .= "$description"; 
    $html .= "<br />$pubDate & $category<hr />"; 
    } 
} 
echo $html; 
?> 

有些<item>有多個類別,但它應該在我的過濾新聞,以及它是否包含<category >Lifestyle</category>(但我的代碼目前僅找到的第一個)的XML的

部分:

<item> 
    <title>Elsevier lijft Newsflo in</title> 
    <link>http://www.nu.nl/beurs/3970862/elsevier-lijft-newsflo-in.html</link> 
    <description>Elsevier neemt het Britse Newsflo over. Dat maakt het bedrijf maandag bekend.</description> 
    <pubDate>Mon, 12 Jan 2015 11:43:41 +0100</pubDate> 
    <guid isPermaLink="false">3970862</guid> 
    <enclosure url="http://media.nu.nl/m/m1mxod5a5wxc_sqr256.jpg/elsevier-lijft-newsflo-in.jpg" length="0" type="image/jpeg" /> 
    <category>Beurs</category> 
    <dc:creator>ANP</dc:creator> 
    <dc:rights>copyright photo: ANP</dc:rights> 
    <atom:link href="http://nu.nl/beurs/3800685/elsevier-koopt-medische-informatieleverancier.html" type="text/html" rel="related" title="Elsevier koopt medische informatieleverancier" /> 
    </item> 
    <item> 
    <title>'Frida Giannini krijgt geen afscheidsshow bij Gucci'</title> 
    <link>http://www.nu.nl/lifestyle/3970858/frida-giannini-krijgt-geen-afscheidsshow-bij-gucci.html</link> 
    <description>Frida Giannini, voormalig hoofdontwerpster van Gucci, heeft geen grote afscheidsshow gekregen zoals verwacht. De ontwerpster zou vrijdag stilletjes vertrokken zijn bij het label.</description> 
    <pubDate>Mon, 12 Jan 2015 11:41:52 +0100</pubDate> 
    <guid isPermaLink="false">3970858</guid> 
    <enclosure url="http://media.nu.nl/m/m1mxn43acqev_sqr256.jpg/frida-giannini-krijgt-geen-afscheidsshow-bij-gucci.jpg" length="0" type="image/jpeg" /> 
    <category>Lifestyle</category> 
    <dc:creator>NU.nl</dc:creator> 
    <dc:rights>copyright photo: Wenn</dc:rights> 
    <atom:link href="http://nu.nl/lifestyle/3970265/alessandro-michele-nieuwe-hoofdontwerper-gucci.html" type="text/html" rel="related" title="'Alessandro Michele nieuwe hoofdontwerper Gucci'" /> 
    <atom:link href="http://nu.nl/lifestyle/3951514/hoofdontwerpster-en-directeur-vertrekken-bij-gucci.html" type="text/html" rel="related" title="Hoofdontwerpster en directeur vertrekken bij Gucci" /> 
    <atom:link href="http://nu.nl/lifestyle/3783917/hoofdontwerpster-gucci-spreekt-geruchten-vertrek.html" type="text/html" rel="related" title="Hoofdontwerpster Gucci spreekt geruchten vertrek tegen" /> 
    </item> 
    <item> 
    <title>Militairen met buitenlandse partner naar rechter</title> 
    <link>http://www.nu.nl/binnenland/3970856/militairen-met-buitenlandse-partner-rechter.html</link> 
    <description>Een aantal militairen met een buitenlandse partner stapt naar de rechter omdat zij al maanden geschorst thuis zitten. De schorsing is het gevolg van het feit dat hun partner niet gescreend kan worden.</description> 
    <pubDate>Mon, 12 Jan 2015 11:41:24 +0100</pubDate> 
    <guid isPermaLink="false">3970856</guid> 
    <enclosure url="http://media.nu.nl/m/m1oxcv7anu4p_sqr256.jpg/militairen-met-buitenlandse-partner-rechter.jpg" length="0" type="image/jpeg" /> 
    <category>Binnenland</category> 
    <category>Lifestyle</category> 
    <dc:creator>ANP</dc:creator> 
    <dc:rights>copyright photo: ANP</dc:rights> 
    </item> 

我覺得我在T犯了一個錯誤他PHP,但我不知道如何解決它...

回答

0

只選擇所需<item> s的xpath()

$xml = simplexml_load_string($x); // assume XML in $x 
$items = $xml->xpath("//item[category='Lifestyle']"); 

//item將在樹中選擇所有的項目節點,不管他們的位置如何,條件在[]$item是包含SimpleXML元素的數組。

輸出:

foreach ($items as $item) echo $item->title . PHP_EOL; 

看到它的工作:https://eval.in/241693