0

Mysql データベースから Xml ファイルを作成する必要があります。私はxmlファイルを生成するためにphpスクリプトを使用しています。ここで、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いますが、機能していません。では、どうすれば特殊文字を Xml ファイルに挿入できますか?

4

1 に答える 1

0

XML ドキュメントに特定の文字を挿入することはできません。回避策は、送信者と受信者の両方がエンコード方法に同意することです。一般的なオプションには、Base64 と Ascii85 があります。

Unicode コントロール ピクチャを使用するなど、単純な文字置換を行うことも可能です。たとえば、\0 の場合は ␀ \u2400、\b の場合は ␇ \ u2407です。これにより、人間が判読できるようになりますが、それでも送信者と受信者が同意する必要があります。

于 2013-04-07T15:41:58.687 に答える