xpath无效问题分析

阅读更多

1.项目使用的webservice框架为Axis1.4。开发功能的过程中需要使用xpath解析接口返回的xml.

无奈怎么写path 都不起作用,于是为了跟源码建了个工程,跳过得项目里封装的api.

 

1. maven pom.xml 需要引入commons-discovery,否则调用接口会报错


			javax.xml.rpc
			javax.xml.rpc-api
			1.1.1
		

		
			xerces
			xercesImpl
			2.11.0
		

		
			org.apache.axis
			axis
			1.4
		
		
			commons-discovery
			commons-discovery
			0.2
		

 

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前缀。

 

解析生效

 

你可能感兴趣的:(xpath无效问题分析)