【コマンド】xmlを整形(フォーマット)したい(xmllint)

xml形式のデータが一行の時、フォーマットできると作業効率は上がる。この場合、xmllintコマンドが便利。ただし、筆者はLinuxとmacしか試していないので他のOSは不明。

はじめに

以下のようにxml形式のデータが一行だったり、綺麗に整形されていなかったりすると見えにくい。

<?xml version="1.0" encoding="UTF-8"?><aaa><bbb>xxxxx</bbb></aaa><ccc>yyyyy</ccc><aaa><bbb>xxxxx</bbb></aaa><ccc>yyyyy</ccc><aaa><bbb>xxxxx</bbb></aaa><ccc>yyyyy</ccc><aaa><bbb>xxxxx</bbb></aaa><ccc>yyyyy</ccc><aaa><bbb>xxxxx</bbb></aaa><ccc>yyyyy</ccc>
<?xml version="1.0" encoding="UTF-8"?><aaa><bbb><ccc>xxxxx</ccc></bbb><ddd>yyyyy</ddd>
<bbb><ccc>xxxxx</ccc></bbb><ddd>yyyyy</ddd>
<bbb><ccc>xxxxx</ccc></bbb><ddd>yyyyy</ddd>
<bbb><ccc>xxxxx</ccc></bbb><ddd>yyyyy</ddd>
<bbb><ccc>xxxxx</ccc></bbb><ddd>yyyyy</ddd></aaa>

Udemy >> Java超初心者でも大丈夫!挫折させないJavaプログラミング講座~基礎固め編~

xml形式を整形する(xmllintコマンド)

xmllintコマンドのformatオプションで対象のファイルを指定することで整形されたxmlが出力される。

xmllint --format ファイルパス

ファイル出力したい場合は、リダイレクトで書き込めば良い。

xmllint --format ファイルパス > 出力ファイルパス

サンプル

冒頭で記載した、sample_1.xmlとsample_2.xmlを整形してみる。

xmllint --format sample_1.xml
xmllint --format sample_2.xml

どちらの結果も以下のようになる。

<?xml version="1.0" encoding="UTF-8"?>
<aaa>
  <bbb>
    <ccc>xxxxx</ccc>
  </bbb>
  <ddd>yyyyy</ddd>
  <bbb>
    <ccc>xxxxx</ccc>
  </bbb>
  <ddd>yyyyy</ddd>
  <bbb>
    <ccc>xxxxx</ccc>
  </bbb>
  <ddd>yyyyy</ddd>
  <bbb>
    <ccc>xxxxx</ccc>
  </bbb>
  <ddd>yyyyy</ddd>
  <bbb>
    <ccc>xxxxx</ccc>
  </bbb>
  <ddd>yyyyy</ddd>
</aaa>