首页 >后端开发 >php教程 >如何在 PHP 中漂亮地打印 XML 输出?

如何在 PHP 中漂亮地打印 XML 输出?

Patricia Arquette
Patricia Arquette原创
2024-11-28 22:00:17388浏览

How to Pretty Print XML Output in PHP?

如何在 PHP 中漂亮地打印 XML

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn