2016-03-31 12 views
0

Ich habe ein Problem mit dem Parsen von RSS-Feeds mit Include-Namespaces. Ich verwende PHP für dieses Szenario und alle anderen Felder werden ordnungsgemäß analysiert.Wie man Tags mit Namespaces im RSS-Feed parsen kann <site: content>

Die einzige mit Problemen ist Beschreibung im RSS-Feed dieses Tag ist <job:description>.

Jeder Rat wird sehr geschätzt werden!

<?php 

    $rss = new DOMDocument(); 
    $rss->load('http://careers.pageuppeople.com/671/cw/en-us/rss'); 
    $feed = array(); 
    foreach ($rss->getElementsByTagName('item') as $node) { 
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
            'desc' => $node->getElementsByTagNameNS("http://careers.pageuppeople.com/671/cw/en-us/rss","description")->item(0)->nodeValue, 
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
            'pubDate' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
            'closeDate' => $node->getElementsByTagName('closingDate')->item(0)->nodeValue, 
            'field_city' => $node->getElementsByTagName('location')->item(0)->nodeValue, 
            ); 
        array_push($feed, $item); 
    } 
    $limit = 5; 
    echo '<?xml/>'; 
    for($x=0;$x<$limit;$x++) { 
        echo '<item>'; 
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
        $link = $feed[$x]['link']; 
        $description = $feed[$x]['desc']; 
        $field_city = $feed[$x]['field_city']; 
        $pubDate = date('Y: m: d', strtotime($feed[$x]['pubDate'])); 
        $closeDate = date('Y: m: d', strtotime($feed[$x]['closeDate'])); 
        echo '<title>'.$title.'</title>'; 
        echo '<pubDate>'.$pubDate.'</pubDate>'; 
        echo '<closeDate> '.$closeDate.'</closeDate>'; 
        echo '<link>'.$link.'</link>'; 
        echo '<field_city>'.$field_city.'</field_city>'; 
        echo '<body>'.$description.'</body>'; 
        echo '<field_how_to_apply><strong>UNICEF is committed to diversity and inclusion within its workforce, and encourages qualified female and male candidates from all national, religious and ethnic backgrounds, including persons living with disabilities, to apply to become a part of our organization.<br><br>To apply click on the link below.</strong><br><br>'.$link.'</field_how_to_apply>'; 
        echo '</item>'; 

    } 

    echo '</channel></rss>'; 

?> 

Antwort

1

Sie verwenden eine falsche NameSpaceURI. Sie können NameSpaceURIs finden, die nach xmlns:prefix in einem Elternknoten des namespaced Knotens (allgemein in dem Stammknoten) suchen.

In Ihrem Fall:

<channel xmlns:job="http://pageuppeople.com/"> 

So haben Sie richtig NSURI verwenden:

(...) 
'desc' => $node->getElementsByTagNameNS("http://pageuppeople.com/","description")->item(0)->nodeValue, 
(...) 

und Ihr Skript wil Arbeit.

+0

Funktioniert wie ein Charme Vielen Dank! – PiotrK