0

我必须对 JAXB 对象进行大量工作,并且在获取值时有一件烦人的事情。假设我得到了下一个 XML:

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

在java中,我可以达到元素 c 的值,如下所示:

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

但是,如果元素不是强制性的,那么我必须实现许多 if 条件来检查元素是否为空。

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

我想直接在 JAXB 对象上使用 XPath 以避免编写这些可怕的 if 条件。我知道有一些类似的工具(例如 Apache JXPAth),但通常这些框架使用反射。我不想使用反射,因为它会严重影响性能。不幸的是,如果不使用反射,我无法想象任何解决方案,但也许有一个。你可以帮帮我吗?谢谢,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 回答