没有反射的Java Xpath



我必须处理很多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。文档可以与XPath一起使用,但下一个问题是如何使用org.w3c.dom。文档在一个带注释的web服务没有再次编组它?(我有点担心对XML进行不必要的编组)谢谢!

嗯,这不是一个"好的"解决方案,但是如果您的主要目标是避免编写所有这些if条件,您是否考虑过将整个事情包装在try/catch NullPointerException中?在不存在异常的情况下,性能会受到影响,我想说这不是很好地使用异常,但它可以允许更简单的语法来获取和使用内部值。

相关内容

  • 没有找到相关文章

最新更新