JavaでXPathを扱うときに覚えておきたいメモ
複数のネームスペースがあるXMLドキュメントをJavaで処理する場合に、知らなければ分からなそうなXPathの書き方のメモ
Apache NiFiのEvaluateXPathプロセッサーを設定中にこの問題にはまったが、これはJavaでXPathを処理するライブラリの都合のよう。
そのまま書くと以下のような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リーダーが作れそう。