2011-09-21 59 views
1

我是XML解析的新手,所以請指出我的問題中的任何錯誤。PHP中的XML生成問題

  1. 我有一個XML文件,我無法更改。
  2. 我已經寫了一個php腳本,通過get參數獲取用戶輸入,然後在xml文件中搜索suitaible條目。一旦找到基於get參數的條目,它會爲該條目輸出適合的XML。
  3. 對於大多數情況,腳本工作正常,當瀏覽器使用get參數調用腳本時,瀏覽器將顯示與該ID對應的特定XML數據。

問題:在某些情況下,XML文件包含&。當調用這些條目時,瀏覽器附近符號標記會生成XML錯誤。我想知道到底是什麼導致了這個問題,並阻止了格式良好的XML的形成。

這是我的PHP代碼...

for($j=0;$j<$length;$j++) 
{ 
    $name=$parent->childNodes->item($j)->nodeName; 
    for($k=0;$k<$num;$k++) 
    { 
     if($name==$elements_reqd[$k]) 
     { 
      $value=$parent->childNodes->item($j)->textContent; 
      $info=array_push_assoc($info,$elements_reqd[$k],$value); 
     } 
    } 

} 


echo "<LISTING>"; 
foreach($info as $key => $value) 
{ 
    echo "<$key>$value</$key>"; 
} 
echo "</LISTING>"; 


function array_push_assoc(&$array, $key, $value){ 
$array[$key] = $value; 
return $array; 
} 
+0

您可以使用db嗎? –

回答

0

5 characters that must be escaped in XML,&是其中之一。如果$值是像一個字符串「&」它應該在XML顯示爲「此&amp;那」

一種方式來實現XML在PHP中逃脫是:

echo "<$key>".htmlspecialchars($value)."</$key>"; 

此外,呼應你的XML之前輸出,爲XML設置標題並添加文檔聲明,以便瀏覽器確切知道XML正在交付:

header ("Content-Type: text/xml"); 
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'; 
echo "<LISTING>"; 
...