タイトルはほとんどすべてを語っています。
次のようなものがある場合(from PHP site examples):
$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();
私は次のような長い文字列を出力することになります:
<?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>
これはプログラムの消費者にとっては問題ありませんが、デバッグ/ヒューマンタスクの場合、これをNiceインデント形式に変換する方法を知っている人はいますか?
SimpleXMLElementのPHPマニュアルページ のコメントにはさまざまな解決策があります。あまり効率的ではありませんが、確かに簡潔な、匿名によるソリューションです
$dom = dom_import_simplexml($simpleXml)->ownerDocument;
$dom->formatOutput = true;
echo $dom->saveXML();
PHPマニュアルページのコメントは、最初に特許の誤ったものを除外する限り、一般的なニーズに適した情報源であることがよくあります。
上記は私のために機能しませんでした、私はこれが機能することがわかりました:
$dom = new DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();
同様の解決策を見つけました...生のxlmデータをフォーマットするために._php SOAP
_リクエストから___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>";
_
以下は、フォーマットされたXML出力のサンプルです。
注:書式設定されたXMLは$dom->saveXML()
で使用でき、php file writeを使用してxmlファイルに直接保存できます。