ウェブサイト検索

コマンドラインでXMLをJSONに変換する方法


XMLは複雑であり、スクリプト言語を使用しても、ネイティブに解析するのはかなり難しいです。しかし、XMLをJSONに変換できるユーティリティがあるため、スクリプトやコマンドラインの両方で作業しやすくなります。

xqユーティリティを使用してください

これにはカスタムメイドのユーティリティを使用する方が良いでしょう。正規表現のようなもので解析しようとするのは悪い考えです。このタスクに最適なユーティリティは xq という名前です。これは一緒にインストールされます。

yq

YAMLに対応しているものです。インストールできます。

yq

pipから:

pip install yq

このユーティリティは内部で jq を使用して JSON を扱っているので、バイナリをダウンロードして、あなたの PATH 上のどこかに移動する必要があります (/usr/local/bin/ がうまくいくはずです)。

これで、XML入力をxqにパイプすることで解析できるようになります。

cat xml | xq .

. 演算子は、XMLをすべてJSONに変換したいことを意味します。実際には、サブ要素を選択するために完全なjq 構文を使用することができ、こちらのガイドを読むことができます。

次のように、xqの応答をXMLとして出力することもできます:-xフラグを使用します。

xq -x

これにより、jq の選択構文を使用して XML を解析しながら、XML 形式を維持することができます。ただし、xq はまだ XML 構文を必要とするため、逆方向への変換はできないようです。

XMLからJSONへの変換の一つの問題

XMLからJSONへの変換は完全ではありません。XMLでは、要素の順序が重要である場合がありますし、キーが重複することもあります。このような文書:

<e>

<a>some</a>

<b>textual</b>

<a>content</a>

</e>

JSONにそのまま翻訳するとエラーが発生します。なぜなら、aキーが二回存在するからです。そのため、配列に変換されますが、順序が崩れてしまいます。xqは、そのXMLのために次の出力を返します:

{

"e": {

"a": [

"some",

"content"

],

"b": "textual"

}

}

技術的には正しいですが、すべての状況で理想的ではありません。XML変換に問題がないか、二重確認する必要があります。

関連記事: