Eli*_*Eli 36 php xml formatting simplexml
标题基本概括了所有内容.
如果我有类似的东西(从PHP站点示例):
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies></movies>
XML;
$sxe = new SimpleXMLElement($xmlstr);
$sxe->addAttribute('type', 'documentary');
$movie = $sxe->addChild('movie');
$movie->addChild('title', 'PHP2: More Parser Stories');
$movie->addChild('plot', 'This is all about the people who make it work.');
$characters = $movie->addChild('characters');
$character = $characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');
$rating = $movie->addChild('rating', '5');
$rating->addAttribute('type', 'stars');
echo("<pre>".htmlspecialchars($sxe->asXML())."</pre>");
die();
Run Code Online (Sandbox Code Playgroud)
我最终输出一个长字符串,如下所示:
<?xml version="1.0" standalone="yes"?>
<movies type="documentary"><movie><title>PHP2: More Parser Stories</title><plot>This is all about the people who make it work.</plot><characters><character><name>Mr. Parser</name><actor>John Doe</actor></character></characters><rating type="stars">5</rating></movie></movies>
Run Code Online (Sandbox Code Playgroud)
这对于程序使用者来说很好,但是对于调试/人工任务,有没有人知道如何将它变成一个漂亮的缩进格式?
Ada*_*ght 72
SimpleXMLElement的PHP手册页上的注释中有各种解决方案.效率不高,但肯定是简洁的,是Anonymous的解决方案
$dom = dom_import_simplexml($simpleXml)->ownerDocument;
$dom->formatOutput = true;
echo $dom->saveXML();
Run Code Online (Sandbox Code Playgroud)
PHP手册页注释通常是常见需求的良好来源,只要您首先过滤掉明显错误的内容即可.
小智 49
以上对我不起作用,我发现这有效:
$dom = new DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();
Run Code Online (Sandbox Code Playgroud)
找到了一个类似的解决方案......从我的php SOAP请求中格式化原始xlm数据__getLastRequest & __getLastResponse,以便快速调试xml我已经将它与它结合起来google-code-prettify.
如果您想格式化敏感的xml数据并且不想在线进行,那么它是一个很好的解决方案.
下面的一些示例代码可能对其他人有帮助:
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($data); //=====$data has the raw xml data...you want to format
echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>';
echo "<br/> <pre class=\"prettyprint\" >". htmlentities($dom->saveXML())."</pre>";
Run Code Online (Sandbox Code Playgroud)
下面是我获得的格式化XML输出的示例:
注意:格式化的XML可用$dom->saveXML(),可以使用php文件写入直接保存到xml文件.
| 归档时间: |
|
| 查看次数: |
77409 次 |
| 最近记录: |