JavaでXPathを扱うときに覚えておきたいメモ

複数のネームスペースがあるXMLドキュメントをJavaで処理する場合に、知らなければ分からなそうなXPathの書き方のメモ

Apache NiFiのEvaluateXPathプロセッサーを設定中にこの問題にはまったが、これはJavaXPathを処理するライブラリの都合のよう。

stackoverflow.com

そのまま書くと以下のようなXPathで処理してほしいところが、

/item/description

複数のネームスペースがある場合は、以下のように書かないとうまく処理されない。

/*[local-name()='item']/*[local-name()='description']

 

ちなみにApache NiFiを使って、XMLの取得とパース、JSONフォーマットへの変換フローを設定することができた。使ったNiFiのプロセッサーは"SplitXml", "EvaluateXPath", "AttributeToJSON"で、XMLドキュメント内の要素を分割、指定したXPathで分割したXMLから値を取得してNiFiのattributeとして取り出し、最終的にJSONに変換している。NiFiベースのRSSリーダーが作れそう。