现在的位置: 首页 > 综合 > 正文

jaxen版本问题造成xpath工作不正常

2013年10月09日 ⁄ 综合 ⁄ 共 646字 ⁄ 字号 评论关闭

由于工作中经常涉及跨平台的数据交换,XML是不二选择。 

虽然SOAP能让各种异构平台都使用自由对象,但是很难避免要手动处理通过纯文本传递过来的xml数据。XPath能让工作简单很多,这样一条xpath查询:

/*[local-name()='Root']/*[local-name()='Person']/*[local-name()='Name']

显然要比手动处理SAX流程或者dom tree要简单很多,况且现在jdom和dom4j都已经大量普及,他们对xpath的支持都还做的不错。

今天写了一段代码,利用一个xpath查询,在dom4j中处理一个极为简单的xml,本来打算几分钟脱手的,结果程序一直执行不正常,xpath始终无法找到节点,无论怎么查,都只能返回null或是size=0的List,程序也不报告任何异常,其不厚道者甚矣。一再确认xpath表达式、标签名、明明空间,却总是不得要领,郁闷,太过丢人。

无奈之下,只能怀疑部署环境有问题。程序是部署在Jboss 4.0.2下的一个很简单的war,打开jboss/lib,发现下面由一个dom4j,估计版本有点低,替换成dom4j 1.6.1,问题依旧,再郁闷。喝两口茶,突然想起dom4j的xpath api是依赖jaxen完成的,其功能本身和dom4j.jar没有什么关系,于是把jboss/lib下的jaxen.jar替换成dom4j 1.6.1的lib下的版本,try again,运行正常。

第一次使用搜狗输入法,发现很容易产生错别字。

 

抱歉!评论已关闭.