我必须处理很多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中?在不存在异常的情况下,性能会受到影响,我想说这不是很好地使用异常,但它可以允许更简单的语法来获取和使用内部值。