0

私は JAXB オブジェクトで多くの作業を行う必要があり、値を取得するときに煩わしいことがあります。次の XML を取得したとします。

...
<a>
   <b>
      <c>1</c>
   </b>
</a>
...

Java では、次のように要素 c の値に到達できます。

xml.getA().getB().getC()

ただし、要素が必須でない場合は、要素が null かどうかを確認する if 条件を多数実装する必要があります。

if (xml != null && xml.getA() != null && xml.getA().getB() != null && xml.getA().getB().getC() != null {
   ...
}

これらの恐ろしい if 条件を記述することを避けるために、JAXB オブジェクトで XPath を直接使用したいと考えています。似たようなツール (Apache JXPAth など) がいくつかあることは知っていますが、通常、これらのフレームワークはリフレクションを使用します。リフレクションはパフォーマンスに悪影響を与えるため、使用したくありません。残念ながら、リフレクションを使用せずに解決策を想像することはできませんが、おそらく 1 つあるでしょう。私たちを手伝ってくれますか?ありがとう、V.


org.w3c.dom.Document は XPath で使用できることがわかりましたが、次の問題は、再度マーシャリングせずに、注釈付き Web サービスで org.w3c.dom.Document を使用するにはどうすればよいかということです。(XML を必要以上にマーシャリングするのは少し心配です) ありがとうございます!

4

1 に答える 1

0

まあ、それは「良い」解決策ではありませんが、主な目標が if 条件をすべて記述することを避けることである場合、すべてを try/catch NullPointerException でラップすることを検討しましたか? 例外が存在しない場合はパフォーマンスが低下します。例外の使用はあまり適切ではありませんが、内部値にアクセスして使用するためのより単純な構文が可能になります。

于 2013-05-28T18:27:08.527 に答える