Bash:
XMLの扱い方
方法:
BashでXMLを解析する方法です。ツールは?xmllintとxmlstarletです。XML要素をループ処理すること?間違いなしです。サンプル出力付きの例:
# xmlstarletがインストールされていると仮定
# インストールするには:apt-get install xmlstarlet
# XMLコンテンツを解析
cat <<EOF > sample.xml
<fruits>
<fruit name="Apple"/>
<fruit name="Banana"/>
</fruits>
EOF
# xmlstarletで名前を抽出
xmlstarlet sel -t -m "//fruit" -v "@name" -n sample.xml
# 出力は以下のようになります:
# Apple
# Banana
深く掘り下げる
90年代に入ると、XMLはSGMLに比べてよりシンプルな代替品として登場しましたが、HTMLよりも構造化されています。現在では、例えばJSON、YAMLなどの仲間がいます。しかし、XMLは特に設定やSOAPベースのWebサービスで、依然として活躍しています。
ツールの面では、xmllintはXMLの検証、xpathクエリに適しています。xmlstarletはXMLのさまざまなことに対応するスイスアーミーナイフです―クエリ、編集、検証、変換。Bashスクリプトでは、XMLタスクのためのスーパーヒーローです。
内部では、xmllintはlibxml2―XML Cパーサーを使用しています。それは速いですが、エラーメッセージは?解読しにくいです。そしてxmlstarlet?再帰テンプレートとEXSLTサポート。頭を悩ませるかもしれませんが、非常に強力です。
参照
- xmlsoft.org:Libxml2とxmllintの情報。
- Stack Overflow:実世界の問題と解決策。
- W3Schools XMLチュートリアル:XMLの基礎。