2013-04-05 142 views
0

我必須從Mysql數據庫創建一個Xml文件。我正在使用PHP腳本來生成xml文件。 的PHP代碼這裏的部分我使用生成我的XML文件:Xml中的特殊字符

// create a new XML document 
$doc = new DomDocument('1.0', 'UTF-8'); 

// create root node 
$root = $doc->appendChild($doc->createElement('rss')); 
$root->setAttribute('version', '2.0'); 
$root->setAttribute('encoding', 'UTF-8'); 

// create children 
while($row = mysql_fetch_assoc($result)) { 
    // add node for each row 
    $occ = $doc->createElement('item'); 
    $occ = $channelNode->appendChild($occ); 


    // add a child node for each field 

    foreach ($row as $fieldname => $fieldvalue) { 


     if($fieldname =='description') { 

      $newcdata=$doc->createCDATASection($fieldvalue); 
      $child = $doc->createElement($fieldname); 
      $child = $occ->appendChild($child); 
      $value = $doc->createTextNode($fieldvalue); 
      $value = $child->appendChild($newcdata); 
     } 
     else { 
      $child = $doc->createElement($fieldname); 
      $child = $occ->appendChild($child); 
      $value = $doc->createTextNode($fieldvalue); 
      $value = $child->appendChild($value); 
     } 



     } // foreach 

} // while 

這個程序運作良好。問題發生在數據庫中插入XML文件的特殊字符的位置,在這種情況下,我嘗試使用CDATA來插入數據,但它不起作用。那麼,如何將特殊字符插入到Xml文件中?

+0

「不工作」不是問題描述。怎麼了?這是什麼「特殊字符」? – 2013-04-05 16:18:21

回答

0

無法將certain characters插入到XML文檔中。解決方法是讓發件人和收件人就如何編碼達成一致。常用選項包括Base64和Ascii85。

也可以做簡單的字符替換,例如使用Unicode控制圖片。例如,對於\ 0,␀\u2400,對於\ 0,␇\u2407。這可以保持人類的可讀性,但仍然需要發送者和接收者達成一致。