PHP で XML を操作する場合、書式設定で問題が発生する可能性があります。ブラウザーで XML を表示するときに必要なインデントと空白文字が得られない場合、この記事では、適切な形式の XML データを出力するための解決策を提供します。
次のPHP コードは XML ドキュメントを作成しますが、不適切な形式の出力を生成します:
$doc = new DomDocument('1.0'); // create root node $root = $doc->createElement('root'); $root = $doc->appendChild($root); $signed_values = array('a' => 'eee', 'b' => 'sd', 'c' => 'df'); // process one row at a time foreach ($signed_values as $key => $val) { // add node for each row $occ = $doc->createElement('error'); $occ = $root->appendChild($occ); // add a child node for each field foreach ($signed_values as $fieldname => $fieldvalue) { $child = $doc->createElement($fieldname); $child = $occ->appendChild($child); $value = $doc->createTextNode($fieldvalue); $value = $child->appendChild($value); } } // get completed xml document $xml_string = $doc->saveXML(); echo $xml_string;
To適切にフォーマットされた XML 出力を取得するには、DomDocument オブジェクトに次のパラメータを設定できます。
$doc->preserveWhiteSpace = false; $doc->formatOutput = true;
preserveWhiteSpace を false に設定すると、出力から空白文字が削除されます。 formatOutput を true に設定すると、XML 要素のインデントが有効になります。
または、DomDocument の作成直後にこれらのパラメーターを設定できます。
$doc = new DomDocument('1.0'); $doc->preserveWhiteSpace = false; $doc->formatOutput = true;
どちらの場合でも、出力は適切にフォーマットされた XML を提供します。
<?xml version="1.0"?> <root> <error> <a>eee</a> <b>sd</b> <c>df</c> </error> <error> <a>eee</a> <b>sd</b> <c>df</c> </error> <error> <a>eee</a> <b>sd</b> <c>df</c> </error> </root>
さらにカスタマイズしたい場合は、インデントを使用するには、正規表現ベースのアプローチを使用できます。
$xml_string = preg_replace('/(?:^|\G) /um', "\t", $xml_string);
これにより、二重スペースがタブに置き換えられます。
以上がPHP で XML 出力をきれいに印刷する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。