<?xml version="1.0" encoding="utf-8"?><items>
<item><title>title3</title><desc>This is some desc3</desc></item></items>
Run Code Online (Sandbox Code Playgroud)
使用asXML()输出时,每个节点元素之间没有换行符?
如何通过在包含子元素节点的每个XML元素打开和关闭标记之后添加换行符来输出结构良好的文件:
<?xml version="1.0" encoding="utf-8"?>
<items>
<item>
<title>title3</title>
<desc>This is some desc3</desc>
</item>
</items>
Run Code Online (Sandbox Code Playgroud)
该SimpleXML的扩展仅限于格式化输出,它的姊妹扩展,DOM文档具有格式化输出的支持.您的示例中的XML字符串,并使用DOMDocument::$preserveWhiteSpace和DOMDocument::$formatOutput控制formatttings:
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$doc->loadXML($string);
echo $doc->saveXML();
Run Code Online (Sandbox Code Playgroud)
这将输出一个很好的缩进XML,其中包含您要求它们的换行符:
<?xml version="1.0" encoding="utf-8"?>
<items>
<item>
<title>title3</title>
<desc>This is some desc3</desc>
</item>
<empty/>
</items>
Run Code Online (Sandbox Code Playgroud)
如果您还需要操作缩进,则可以使用在相关问题和答案中概述的正则表达式:使用preg_replace转换缩进(无回调).
如果您不想使用该方法,您还可以从SimpleXML切换到其他方法,然后再切换到XMLWriter,它提供了一种方法来设置打印XML 的缩进(XMLWriter :: setIndent).您需要找到XML模型的临时表示来编写它,XMLWriter但这看起来并不那么简单.
| 归档时间: |
|
| 查看次数: |
5471 次 |
| 最近记录: |