メッセージ

2020年03月08日の記事

2020/03/08(日)XML ファイルを解析する perl モジュール

現在の作業が落ち着いたところで、
2年近くずーっと延期していたWeb気象通報サイトの抜本的改築を行おうと考えています。

元データはXML形式のファイルで、技術的にこれを逐次解析処理する必要があります。
そこで作業準備にあたり、どのXMLライブラリを主力にするかの検討からなのです。

現状、Perl5 では下記のXMLライブラリがあり、依存する汎用ライブラリが異なります:

XML::Simple libexpat が必要
XML::Parser libexpat が必要
XML::DOM   libexpat が必要
XML::LibXML libxml2 が必要
XML::Feed  libxml2 と libexpat の両方必要
#他にもあるが、最終更新日時が古い・事例が殆ど無いなどの理由で最初から却下。

libexpat も libxml2 も XMLを処理するC言語ベースのライブラリで、
Perlで実現するXML処理は、単にこれらのライブラリとの仲介をしているだけに過ぎないです。

ですが、その処理手法が異なっており、libexpat を使うモジュールは、libexpat そのものの構造からして

・巨大なXMLをパース(解析)できない
・複雑なデータ構造のXMLをパースできない

という問題があるようで、これは今回のプロダクションには採用できない(しないほうが無難)模様。
また、XML::Feed は、複雑なデータ構造のXMLパースは機能しないという報告もあり、
昔から標準的で実績豊富とされている XML::LibXML というところに落ち着く形ですね。

ただ、ちょっと使いにくそうです。
OK キャンセル 確認 その他