拡張機能のservice workerでXMLをパースする
Chrome拡張機能のBackground(service worker)でXMLのパースをするのは少々厄介です。本記事ではその問題点と解決方法を解説します。
問題点
通常、XMLを手っ取り早くパースするならDOMParser
を使って次のように書きます。
しかしservice workerではDOMへアクセスできないため、DOMParser
は使えません。
service workerで上記を実行するとDOMParser
は未定義だと怒られます。
解決方法
DOMParserを使わずライブラリを使ってしまえば解決できます。
筆者はfast-xml-parserを使いました。
次のテキストがパース結果です。
属性の取得
属性も取得する場合はignoreAttributes
をfalse
にしておきます。
属性のキーは@_a
のように属性名の前にprefixとして@_
がつきます。
fast-xml-parserのドキュメントはリポジトリのdocsディレクトリにあります。他のXMLParserのオプションを知りたい場合はその公式ドキュメント2.XMLparseOptions.mdを読みましょう。
以上、service workerでXMLをパースする方法でした。拡張機能のBackgroundを書いていると意外と「〇〇が動かない!そうか、DOM……」となりがちですね。