2015-01-12 65 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