当前位置: 首页 > 面试题库 >

PHP XML如何输出漂亮的格式

羊舌承天
2023-03-14
问题内容

以下是代码:

$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结构,例如

<xml> \n tab <child> etc.

我刚得到

<xml><child>ee</child></xml>

我想成为utf-8这怎么可能?


问题答案:

您可以尝试这样做:

...
// get completed xml document
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$xml_string = $doc->saveXML();
echo $xml_string;

您还可以在创建之后立即设置这些参数DOMDocument

$doc = new DomDocument('1.0');
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;

这可能更简洁。两种情况下的输出均为(Demo):

<?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>

我不知道如何使用来更改缩进字符DOMDocument。您可以使用逐行正则表达式替换(例如,使用preg_replace)对XML进行后处理:

$xml_string = preg_replace('/(?:^|\G)  /um', "\t", $xml_string);

另外,还有一个整洁的扩展程序,tidy_repair_string它也可以漂亮地打印XML数据。可以使用它指定缩进级别,但是整洁绝不会输出制表符。

tidy_repair_string($xml_string, ['input-xml'=> 1, 'indent' => 1, 'wrap' => 0]);


 类似资料:
  • 问题内容: 我希望Ruby on Rails中的JSON输出是“漂亮的”或格式正确的。 现在,我打电话给我,而我的JSON都在一行上。有时很难发现JSON输出流中是否存在问题。 有没有办法配置使我的JSON“漂亮”或在Rails中很好地格式化? 问题答案: 使用内置于更高版本JSON中的函数。例如: 这使您:

  • 如何从AWS漂亮地打印出Boto EC2输出? 这是原版(不太漂亮): s是什么? 如果我尝试使用Python的JSON转储,我得到:

  • 问题内容: 我有一个字典列表,带有来自SQL查询的classid,dept,coursenum,area和title字段。我想以人类可读的格式输出值。我在想每列顶部的列标题,然后在每列中适当的输出,即: (显然是使用标准对齐/间距) 我将如何在python中完成此操作? 问题答案: 标准的Python字符串格式可能就足够了。 要么 使用对齐,填充和精确格式说明符来获得最佳结果。

  • 问题内容: 我正在尝试在python中创建一个不错的列列表,以与我创建的命令行管理工具一起使用。 基本上,我想要一个像这样的列表: 变成: 使用普通标签不会解决问题,因为我不知道每一行中最长的数据。 这与Linux中的’column -t’相同。 我到处寻找各种python库来执行此操作,但找不到任何有用的方法。 问题答案: 这样做是计算最长的数据条目以确定列宽,然后在打印出每一列时用于添加必要的

  • 问题内容: 我是一个json对象 在上面的说法应该是相当打印结果。如果我做类似的事情,它就是这样做的。但是,我想通过将其附加到div中来输出给用户。当我这样做时,我只会显示一行。(我认为它不起作用,因为中断和空格未解释为html?) 有没有办法以漂亮的打印方式将结果输出到div? 问题答案: 请使用 标签 演示:http : //jsfiddle.net/K83cK/

  • 我有一个Spring Boot控制台应用程序,我通过JMX访问执行器endpoint。问题是返回的文本打印得不好,也不是JSON。它看起来像这样: 将其转换为可读格式的最佳方法是什么?是否可以将JMX执行器配置为漂亮打印?是否可以将JMX执行器配置为使用JSON? 有一个关于Spring Boot Actuatorendpoint的漂亮打印JSON输出的相关问题,但在这种情况下,我被JMX卡住了,