LinuxのBashとPythonによるXMLの整形表示
XMLは人間が読みやすいマークアップ言語として設計されていますが、きれいにフォーマットされている場合に限ります。XMLファイルを開くと、その内容を理解できないことがあります。特に、大きなXMLファイルの場合はそうです。しかし、BashやPythonでXMLを印刷して、人間が簡単に読みやすくすることができます。このガイドでは、Linux BashおよびPythonでXMLをきれいに印刷するためのさまざまな方法を紹介します。
Linux Bash と Python で XML をきれいに印刷する方法
Pythonで作業していると、XMLを印刷したいケースが出てくるかもしれません。それは外部のXMLファイルか、Pythonスクリプトに含まれているXMLコードのどちらかです。LinuxのBashでは、ターミナルでXMLファイルを開いてその内容を表示したいかもしれません。どちらにせよ、XMLをきれいに印刷するさまざまな方法を見ていきましょう。
1. PythonでXMLをきれいに表示する
オプションについて掘り下げる前に、私たちの例で使用するXMLファイルは以下の通りです:
Pythonでは、XMLを主に2つの方法で扱うことができます。外部ファイルとして与えられたXMLファイルがあると仮定し、それをきれいに表示したい場合、“xml.dom.minidom”ライブラリをインポートすることができます。インポートした後、Pythonのopen()を使用して外部ファイルの内容を読み取ることができます。その後、toprettyxml()を使用して外部XMLファイルをきれいに印刷することができます。
次の例では、外部の「details.xml」ファイルを使用し、コード内で異なる変数を作成します:
次に、ターミナルでPythonスクリプトを実行し、次の図に示されているように整形された出力を得ることができます。DOM Pythonライブラリを使用することでXMLがきれいに整形され、Pythonスクリプトを実行する誰にでも読みやすくなる様子に注目してください:
あるいは、小さなXMLファイルしか持っていない場合は、それを直接Pythonスクリプトに組み込むことができます。それでも、スクリプト内の内部XMLをフォーマットするにはDOM Pythonライブラリが必要です。使用される関数は外部XMLファイルを扱う場合と同じですが、XMLを直接含める点が異なります。
次の画像にXMLをどのように含めるかご覧ください:
その後、以前のようにPythonスクリプトを実行できます。出力において、私たちが次の出力で得たXMLファイルのきれいな印刷版が得られます:
このオプションは、XMLファイルに数行しかない場合にのみ適用されます。大きなXMLファイルの場合は、外部ファイルとして開くことを検討してください。
2. BashでXMLをきれいに表示する
あなたの端末では、XMLを含むファイルの内容を表示することができます。例えば、「cat」コマンドを使って「details.xml」ファイルの内容を表示できます。ただし、出力はフォーマットが悪いため、読みづらいです。
このXMLファイルを美しく印刷するためには、使用できるさまざまなツールがあります。ここでは、一般的なツールの2つを取り上げます。まず、ほとんどのLinuxシステムにインストールされている「xmlstarlet」を使用できます。システムに存在しない場合は、以下のコマンドを実行してインストールしてください。
sudo snap install xmlstarletLinuxシステムで「xmlstarlet」を使用すると、以下の例に示すように、ファイルをXMLの整形表示ができます。出力は整然とフォーマットされるため、読みやすくなります。
代わりに、同じことを達成するために「xmllint」を使用することができます。まず、次のコマンドを使用してシステムにインストールしてください:
sudo apt install libxml2-utilsインストールが完了したら、以下の構文を使用してXMLファイルを迅速に印刷できます。
xmllint --format details.xml
あなたのXMLは、以下の例のようにフォーマットされ、簡単に読み取れるようになります:
フォーマットされたXMLの出力を作成したいとします。出力をリダイレクトして、新しいXMLファイルを作成することができます。以下の例のように行います。新しいファイルを開くと、整形されたXMLのバージョンが表示されます。
結論
LinuxのBashやPythonでXMLファイルを整形して表示することができます。Pythonを使う場合は、コードに組み込むか、外部ファイルとして読み込むことでXMLを整形できます。LinuxのBashでは、さまざまなコマンドラインツールを使用できます。この投稿では、どちらのケースでも使用するのに最適なオプションが詳述されています。試してみてください!









