PHPでXML文字列をキレイに出力する方法

こんにちは、さるまりんです。

あるコンサートのプログラムをXML文字列にしてみました。

<?xml version="1.0"?><プログラム><曲 順序="1"><タイトル>「フィガロの結婚」序曲</タイトル><作曲家>モーツァルト</作曲家></曲><曲 順序="2"><タイトル>トランペット協奏曲</タイトル><作曲家>ハイドン</作曲家></曲><曲 順序="3"><タイトル>交響曲第3番「英雄」</タイトル><作曲家>ベートーヴェン</作曲家></曲></プログラム>

1行です。コンピューターは簡単に読んでくれますが、人にとっては読み難いですよね。

これを字下げなどを意識したキレイにフォーマットされた状態にするプログラムです。

nice_xml_output.php

// XML文字列です。
$xmlString = '<?xml version="1.0" encoding="UTF-8"?><プログラム><曲 順序="1"><タイトル>「フィガロの結婚」序曲</タイトル><作曲家>モーツァルト</作曲家></曲><曲 順序="2"><タイトル>トランペット協奏曲</タイトル><作曲家>ハイドン</作曲家></曲><曲 順序="3"><タイトル>交響曲第3番「英雄」</タイトル><作曲家>ベートーヴェン</作曲家></曲></プログラム>';

// DOMDocumentのオブジェクトを作ります。
$dom = new DOMDocument();

// 文字列を読み込みます。
$dom->loadXML($xmlString);

// 出力をフォーマットするフラグをonにします。
$dom->formatOutput = true;

// XMLを文字列として出力します。
$output = $dom->saveXML();

echo $output;

プログラム中のコメントが各行で何しているかです。

肝はこれ。

// 出力をフォーマットするフラグをonにします。
$dom->formatOutput = true;

このフラグをオンにしておくと$dom->saveXML()で文字列を出力した時に整形されます。

実行すると↓が出力されます。

<?xml version="1.0" encoding="UTF-8"?>
<プログラム>
  <曲 順序="1">
    <タイトル>「フィガロの結婚」序曲</タイトル>
    <作曲家>モーツァルト</作曲家>
  </曲>
  <曲 順序="2">
    <タイトル>トランペット協奏曲</タイトル>
    <作曲家>ハイドン</作曲家>
  </曲>
  <曲 順序="3">
    <タイトル>交響曲第3番「英雄」</タイトル>
    <作曲家>ベートーヴェン</作曲家>
  </曲>
</プログラム>

見やすくなりましたね。ぱっと見てわかる。見やすさって人にとって大切ですね。

読んでくださってありがとうございました。

それではまた!