xpath无效问题分析
程序员文章站
2024-01-13 14:24:34
...
1.项目使用的webservice框架为Axis1.4。开发功能的过程中需要使用xpath解析接口返回的xml.
无奈怎么写path 都不起作用,于是为了跟源码建了个工程,跳过得项目里封装的api.
1. maven pom.xml 需要引入commons-discovery,否则调用接口会报错
<dependency> <groupId>javax.xml.rpc</groupId> <artifactId>javax.xml.rpc-api</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version> </dependency>
2.通过Service对象生成调用对象 Call在调用接口,定位到代码
private static DocumentBuilderFactory getDOMFactory() { DocumentBuilderFactory dbf; try { dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); } catch( Exception e ) { log.error(Messages.getMessage("exception00"), e ); dbf = null; } return( dbf ); }
这个返回的dbf是设置了namespaceAware的,难怪之前怎么写都没有效果,原来是要对xpath设置namespace
3.修改xpath
设置 javax.xml.xpath.XPath xpath 对象增加namespace前缀 "ns",url
设置 xpath路径加上namespace前缀。
解析生效