2011-10-27 9 views
3

POJOのツリーを、単純な「XPath」言語のような言語で公開したいので、ユーザーは/purchaseOrder/location[@city = 'Mountain View']のようなことをすることができますか?POJO上でXPath言語/インタフェースをラップする最も良い方法は何ですか?

+0

お手数ですがもう少し詳しくお聞かせください。ユーザーはシステムとどのように対話しますか? POJOをあなたのプログラムに読み込ませて、ユーザに "問い合わせ"させてもらえますか? – pcalcao

+0

はい、POJOは既存のインスタンスであり、ロードされています。しかし、1つのPOJOのフィールドがXPath経由で別のフィールドにコピーされることがあります。 –

答えて

3

私は非常にまともであると思われ、幾分維持されているApache JXpathを見ました。私はそれがいかに速いかを知らない。

私はJaxenも見てきましたが、これはhereと記載されており、PMD's soure codeと記載されています。しかし、Jaxenはその著者によってabandonedになっているようです。また、ここでサポートされているXPathのバージョンはわかりません。

他にもありますか?

2

POJOがJAXBメタデータを介してXMLにマップされている場合、javax.xml.bind.util.JAXBSourceのインスタンスにルートオブジェクトをラップし、javax.xml.xpath APIを使用してXPathクエリを発行できます。

+0

それは動作しません。 'JAXBSource source =新しいJAXBSource(jaxbContext、parent); \t getInputSource()がすべてnullであるため、Object result = expr.evaluate(source.getInputSource());はMalformedUrlExceptionというエラーをスローします –

+0

JAXBオブジェクトを使用してこれを行う適切な方法を見つけました。 devguli.com/blog/eng/jaxb-binder-and-xpath/ –

+0

またはこのhttp://jarfiller.com/guide/jaxb/xpath.xhtml。しかし、JXPathは高速です –