【摘】使用dom4j解析带有命名空间的XML

原文链接:https://www.iteye.com/blog/jackiee-cn-2087261

 

在使用dom4j解析xml时,遇到xml内容中同时带有自定义命名空间和默认命名空间的问题,百思不得其解,直到拜读了上面链接的文章,问题终于得以解决,特此发文希望也可以帮助到有同样疑惑的同学。

xml内容如下:



	
		
			true
			未知的错误。
					
				  
				
					
						
							
							
						
						
					
					
						
						
						
					
				
			
		
	

 

这段xml本身应该为SOAP报文,但是因为服务发布方的原因,无法使用ws客户端代码直接访问,只能以HTTP方式访问wsdl,获取SOAP报文之后,要二次解析才能获取到ws接口的返回值,即元素内容。单纯以普通xml来看,此xml有两个命名空间,并且我要获取的元素使用的是默认命名空间。

解析元素的代码如下:

//前后代码省略
//......

SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new ByteArrayInputStream(xml.getBytes()));
        
//前缀——命名空间映射
Map map = new HashMap();
map.put("myPre", "http://www.anwr.cn/");
XPath xPath = doc.createXPath("//myPre:retxml");
xPath.setNamespaceURIs(map);
        
Node node = xPath.selectSingleNode(doc);
String text = node.getText();


//前后代码省略
//......

 

你可能感兴趣的:(自留Mark)