Xml中的特殊字符

时间:2013-04-05 12:06:10

标签: xml special-characters

我必须从Mysql数据库开始创建一个Xml文件。我正在使用php脚本来生成xml文件。 这里是我用来生成我的xml文件的PHP代码部分:

// 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插入数据,但它无法正常工作。那么,如何将spcecial字符插入Xml文件?

1 个答案:

答案 0 :(得分:0)

无法将certain characters插入XML文档。解决方法是让发送方和接收方就如何编码达成一致。常见选项包括Base64和Ascii85。

也可以进行简单的字符替换,例如使用Unicode控制图片。例如,对于\ 0,␀\u2400和对于\ b,␇\u2407。这使得人类可读,但仍需要发送者和接收者同意。