xmlをjsonに変換するスクリプト

xmlをjsonに変換するスクリプト

次のtxtファイルに5000の質問があります。

<quiz>
        <que>The question her</que>
        <ca>text</ca>
        <ia>text</ia>
        <ia>text</ia>
        <ia>text</ia>
    </quiz>

すべての問題を次のように変換するためにUbuntuでスクリプトを作成したいと思います。

  {
   "text":"The question her",
   "answer1":"text",
   "answer2":"text",
   "answer3":"text",
   "answer4":"text"
  },

ベストアンサー1

実際には、Pythonプログラミングなしで2つのUnixユーティリティを使用するだけでこの問題を解決できます。

  1. jtm- xml <-> jsonのロスレス変換を許可する
  2. jtc- JSON操作を許可します。

したがって、XMLがfile.xmljtmにあると仮定すると、それを次のjsonに変換します。

bash $ jtm file.xml 
[
   {
      "quiz": [
         {
            "que": "The question her"
         },
         {
            "ca": "text"
         },
         {
            "ia": "text"
         },
         {
            "ia": "text"
         },
         {
            "ia": "text"
         }
      ]
   }
]
bash $ 

その後、一連のJSON変換を適用すると、目的の結果が得られます。

bash $ jtm file.xml | jtc -w'<quiz>l:[1:][-2]' -ei echo { '"answer[-]"': {} }\; -i'<quiz>l:[1:]' | jtc -w'<quiz>l:[-1][:][0]' -w'<quiz>l:[-1][:]' -s | jtc -w'<quiz>l:' -w'<quiz>l:[0]' -s | jtc -w'<quiz>l: <>v' -u'"text"'
[
   {
      "answer1": "text",
      "answer2": "text",
      "answer3": "text",
      "answer4": "text",
      "text": "The question her"
   }
]
bash $ 

しかし、関連するシェルスクリプト(コマンド)があるため、echoPythonよりも遅くなります。 5000の質問については約1分で実行されると予想されます。 (今後のバージョンでは、jtc静的に指定されたJSONでも補間を許可する予定ですので、テンプレートの作成に外部シェルスクリプトを必要とせず、作業速度が非常に速くなります)

構文について質問がある場合は、jtcここでユーザーガイドを見つけることができます。https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md

おすすめ記事