gpt4 book ai didi

php - SimpleXML::addChild() 无法在输出到 xml 时添加换行符

转载 作者:可可西里 更新时间:2023-11-01 13:57:50 26 4
gpt4 key购买 nike

<?xml version="1.0" encoding="utf-8"?><items>
<item><title>title3</title><desc>This is some desc3</desc></item></items>

使用asXML()输出时,每个节点元素之间没有换行?

如何通过在包含子元素节点的每个 XML 元素开始和结束标记后添加换行符来使输出文件结构良好:

<?xml version="1.0" encoding="utf-8"?>
<items>
<item>
<title>title3</title>
<desc>This is some desc3</desc>
</item>
</items>

最佳答案

SimpleXML 扩展仅限于格式化输出,它是姊妹扩展,DOMDocument 支持输出格式化。您的示例中的 XML 字符串并使用 DOMDocument::$preserveWhiteSpaceDOMDocument::$formatOutput 来控制格式:

$doc = new DOMDocument();

$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;

$doc->loadXML($string);

echo $doc->saveXML();

这将输出一个缩进良好的 XML,其中包含您要求的换行符:

<?xml version="1.0" encoding="utf-8"?>
<items>
<item>
<title>title3</title>
<desc>This is some desc3</desc>
</item>
<empty/>
</items>

如果您进一步需要操纵缩进,您可以使用相关问答中概述的正则表达式: Converting indentation with preg_replace (no callback)

如果您不想使用该方法,您也可以从 SimpleXML 切换到其他方法,然后切换到 XMLWriter,它提供了一种方法来设置打印 XML 的缩进 (XMLWriter::setIndent)。您需要找到您的 XML 模型的临时表示以使用 XMLWriter 编写它,但是这看起来并不那么微不足道。

关于php - SimpleXML::addChild() 无法在输出到 xml 时添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3797300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com