欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

解析生效