2013-04-05 169 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。这可以保持人类的可读性,但仍然需要发送者和接收者达成一致。