2012-06-09 58 views
2

我有一個XML文檔,它使用斜槓:註釋。當我使用php來嘗試和檢索這些節點內的東西時,它只是不起作用。由於冒號而沒有得到xml節點

這裏是我的代碼:

<?php 
$rss = new DOMDocument(); 
$rss->load('http://terrodactyl.netau.net/wordpress/?feed=rss2'); 
$feed = array(); 
foreach ($rss->getElementsByTagName('item') as $node) { 
    $item = array ( 
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
        'commentcount' => $node->getElementsByTagName('slash:comments')->item(0)->nodeValue, 
        'creator' => $node->getElementsByTagName('dc:creator')->item(0)->nodeValue, 
     ); 
    array_push($feed, $item); 
} 
$limit = 5; 
for($x=0;$x<$limit;$x++) { 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
    $link = $feed[$x]['link']; 
    $description = $feed[$x]['desc']; 
    $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
      $creator = $feed[$x]['creator']; 
      $comments = $feed[$x]['commentcount']; 
    echo "<div class=’blogpost primary_wide4’><h2>"; 
      echo "<h2>".$title."</h2><img class='left' src='images/image02.jpg' width='250' height='272' alt='' />"; 
    echo "<h3>Posted on ".$date."</h3>"; 
    echo "<p>".$description."</p>"; 
      echo "<p class='meta'>"; 
      echo "<span class='comments'><a href='".$link."'>".$comments."Comments</a></span> "; 
      echo " <span class='readmore'><a href='".$link."'> View Post</a></span></p>"; 
      echo "</div><br><br>"; 
} 
?> 

我怎麼能訪問數據(在這種情況下,0):

<slash:comments>0</slash:comments> 

使用PHP?

+2

「它不工作」 - 你的問題很好的解釋,我接觸查爾斯·澤維爾幫我找出什麼「不工作」意味着你。 – hakre

+1

[用於解析帶有冒號名稱中的冒號的XML的PHP​​庫的可能重複?](http://stackoverflow.com/questions/1575788/php-library-for-parsing-xml-with-a-colons-in-tag - 名稱) –

+2

[幫助DOMDocument XML解析](http://stackoverflow.com/questions/4902288/help-parsing-xml-with-domdocument)可能的重複 - 這是一個名稱空間元素名稱和DOMDocument。 – hakre

回答

5

如果您試圖讀取包含命名空間的標記,則會使用getElementsByTagNamesNS函數。由XML的飼料,會讀一些類似判斷:

$slashNS = "http://purl.org/rss/1.0/modules/slash/"; 
echo $node->getElementsByTagNameNS($slashNS, 'comments')->item(0)->nodeValue; 
+0

請不要回答重複的問題。謝謝! – hakre