Elixir:
XMLの扱い方
方法:
Elixirには、標準ライブラリにXML解析機能は含まれていません。SweetXMLは人気のある選択肢です。使い方は以下の通りです:
# mix.exsの依存関係にSweetXMLを追加
{:sweet_xml, "~> 0.6"}
# コード内で
import SweetXml
xml = """
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
"""
# XMLの解析
note = xml |> xpath(~x"//note")
to = xml |> xpath(~x"//note/to" |> inner_text())
IO.puts to # 出力: Tove
深掘り
XML、または拡張可能マークアップ言語は90年代後半から存在します。冗長ですが構造化されており、複雑なデータ交換に理想的です。JSONの簡潔さによる人気が急上昇する一方で、XMLはその表現力と標準化されたスキーマのために、多くの企業や金融システムで根強く存在しています。
代替案には以下があります:
- より軽量で冗長でないデータ交換のためのJSON。
- 特に内部システム用のバイナリシリアライズデータ通信のためのProtobufやThrift。
内部的には、ElixirのXMLライブラリは解析のためにErlangの:xmerlライブラリを利用しており、これは堅牢なサポートを提供しますが、より現代的なアプローチに比べ直感的ではないかもしれません。Elixirが進化するにつれて、SweetXMLのようなコミュニティ主導のライブラリはこれらをよりElixirらしい構文でラップし、XMLの操作をよりアクセスしやすくしています。
参照:
- SweetXML on Hex: https://hex.pm/packages/sweet_xml
- ElixirのXML解析に関する考え方: https://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-projects.html
- 基本的なXML処理についてのxmerlドキュメント: http://erlang.org/doc/apps/xmerl/index.html