格式化 SimpleXMLElement
Formatting SimpleXMLElement
根据 this answer 可以输出格式化的 xml。然而这个 php 代码:
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><data></data>");
$xml->addChild("child1", "value1");
$xml->addChild("child2", "value2");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
echo $dom->saveXML();
输出value1 value2
那么现在如何正确格式化呢?
要回显格式化的 XML(或 HTML),您必须使用 htmlentities
内置函数,即“将所有适用字符转换为 HTML 实体” .
你的情况:
echo htmlentities($dom->saveXML());
将输出:
<?xml version="1.0" encoding="utf-8"?> <data> <child1>value1</child1> <child2>value2</child2> </data>
与<pre>
html标签一起使用,也会打印换行符和空格:
echo '<pre>' . htmlentities($dom->saveXML()) . '</pre>';
将输出:
<?xml version="1.0" encoding="utf-8"?>
<data>
<child1>value1</child1>
<child2>value2</child2>
</data>
根据 this answer 可以输出格式化的 xml。然而这个 php 代码:
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><data></data>");
$xml->addChild("child1", "value1");
$xml->addChild("child2", "value2");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
echo $dom->saveXML();
输出value1 value2
那么现在如何正确格式化呢?
要回显格式化的 XML(或 HTML),您必须使用 htmlentities
内置函数,即“将所有适用字符转换为 HTML 实体” .
你的情况:
echo htmlentities($dom->saveXML());
将输出:
<?xml version="1.0" encoding="utf-8"?> <data> <child1>value1</child1> <child2>value2</child2> </data>
与<pre>
html标签一起使用,也会打印换行符和空格:
echo '<pre>' . htmlentities($dom->saveXML()) . '</pre>';
将输出:
<?xml version="1.0" encoding="utf-8"?>
<data>
<child1>value1</child1>
<child2>value2</child2>
</data>