在 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;
至要获得格式良好的 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中文网其他相关文章!