2013-10-29 122 views
-1
<rss version="2.0"> 
<channel> 
<title>Report</title> 
<link>...</link> 
<description>Report</description> 
<pubDate>Tue, 29 Oct 2013 23:57:00 +0800</pubDate> 
<copyright>SMG-2009. All rights reserved.</copyright> 
<image>...</image> 
<item> 
<title>Report</title> 
<link>...</link> 
<guid isPermaLink="false">http://Report</guid> 
<description> 
<![CDATA[ 
在 2013-10-30 00:00 <br/> <table border="0"> <tr> <td rowspan="3"><img src="http://xml.gif" width="86" height="86"></td> <td>temperature:22 </td></tr> <tr><td>humidity:50% </td></tr> <tr><td>Wind:South ; Speed: 12 km/hr </td></tr> </table><br/><br/> 
]]> 
</description> 
</item> 
</channel> 
</rss> 

<?PHP 
$weather = new DOMDocument(); 
      $weather -> load("abc.xml"); 
      $temp=$weather->getElementsByTagName('item')->item(0)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue; 
     // $temp = iconv("UTF-8", "big5", $temp); 

    $temp = explode("<td>", $temp); 

      $c = $temp[1]; 
      $h = $temp[2]; 

      echo $c . "----" . $h; 

?> 

// ------------獲取XML數據

現在我想要檢索的是$ C的溫度和$ H對於溼度,但它失敗了,對我的代碼有任何建議?風和速度也是如此。

+0

以何種方式失敗?頂部的<?=可能有問題... – choult

+0

只能輸出「----」 –

回答

0

嘗試:

$weather -> load("abc.xml"); 
$temp=$weather->getElementsByTagName('item')->item(0)->getElementsByTagName('description')->item(0)->nodeValue; 

preg_match_all('/<td>([^<]+)</', $temp, $matches); 

$c = $matches[1][0]; 
$h = $matches[1][1]; 

echo $c . "----" . $h; 
+0

作品,謝謝ziollek,但我想知道爲什麼我的方法不起作用並顯示空白。 –

+0

,因爲描述節點沒有任何子節點。 CDATA中的內容被視爲文本。 – ziollek