我有一个网页,可以根据应用更改的现有XML构建XML。我想在textarea
中输出新的XML文件作为预览。它显示原始XML中存在的任何节点,其中包含原始XML很好的正确空格/格式(缩进和换行符),但任何新节点都显示在一行中没有缩进。例如:
<original parent node>
<original child>value</original child>
</original parent node>
<original parent node>
<new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child>
</original parent node>
以下是在XML中写入和读回的代码:
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = true;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
file_put_contents($file, $dom->saveXML());
echo "<textarea cols='100' rows='40'>".file_get_contents($file)."</textarea>";
我也在使用SimpleXML来操作XMLS。如何为新节点显示正确的whites间距?
答案 0 :(得分:4)
我发现formatOutput
仅在禁用preserveWhiteSpace
时有效:
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml);
echo $dom->saveXML();
答案 1 :(得分:1)
添加它,它适用于我。
echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>';
echo "<br/> <pre class=\"prettyprint\" >". htmlentities($dom->saveXML($dom->firstChild->firstChild->firstChild))."</pre>";
您可以删除$dom->firstChild->firstChild->firstChild
以获取更多信息。
答案 2 :(得分:0)
尝试:
echo "<textarea cols='100' rows='40'>".htmlspecialchars($xml->asXML())."</textarea>";