使用dom4j来解析相关的xml字符串

1.  主要方法

	private Map parseXml(String xml) throws DocumentException, IOException {
	
		SAXReader reader = new SAXReader();
		InputStream in = IOUtils.toInputStream(xml, "UTF-8");
		Document doc = reader.read(in);
		Map map = getParseMapFromXMLStream(doc,"/ContractRoot/TcpCont/Response");
		return map;
	}

	public Map getParseMapFromXMLStream(Document doc,String parentPath) throws DocumentException {

		List rowList = doc.selectNodes(parentPath);
		Map map = null;
		List list = null;
		if(rowList != null && rowList.size() >0) {
			list = new ArrayList();
			for(Iterator iter = rowList.iterator();iter.hasNext();){  
				map = new HashMap();
	            //获得具体的节点的父元素   
	            Element element = (Element)iter.next();  
	            //获得具体的节点的父元素的属性  
//	            List elementList = element.attributes();  
//	            for(Iterator iter1 = elementList.iterator();iter1.hasNext();){  
//	                //将每个属性转化为一个抽象属性,然后获取其名字和值  
//	                AbstractAttribute aa = (AbstractAttribute)iter1.next();  
//	                System.out.println("Name:"+aa.getName()+";Value:"+aa.getValue());  
//	            }  
//				如果element下有子元素,(类似width="**"),要想获得该子元素的值,可以用如下方法  
//				System.out.println(element.elementText("test"));
	            
				//获得父节点内的各种借点或者属性
				Iterator it1 = element.elementIterator();
				while(it1.hasNext()) {
					Element element1 = (Element)it1.next();  
		            //获得子节点的所有列表  
		            List elementList1 = element1.attributes();  
//		            System.out.println("name is " + element1.getName() + "123 is " + element1.getText());
		            map.put(element1.getName(), element1.getText());
//		            list.add(map);
//		            for(Iterator it2 = elementList1.iterator();it2.hasNext();){  
//		                //将每个属性转化为一个抽象属性,然后获取其名字和值  
//		                AbstractAttribute aa = (AbstractAttribute)it2.next();  
////		                System.out.println("Name11:"+aa.getName()+";Value11:"+aa.getValue());  
//		                //这边需要添加借点的名字为KEY的值(重要)
//		                map.put(element1.getName(), aa.getValue());
//		            }
				}
			}
		}	
		return map;
	}

解析数据格式:

<?xml version="1.0" encoding="UTF-8"?>
<ContractRoot>
	<TcpCont>
		<TransactionID>600105A002201305031234567890</TransactionID>
		<ActionCode>1</ActionCode>
		<RspTime>20130918103343</RspTime>
		<Response>
			<RspType>0</RspType>
			<RspCode>0000</RspCode>
			<RspDesc>操作成功</RspDesc>
			<CUST_SO_NUMBER>FJ2013091842549343</CUST_SO_NUMBER>
		</Response>
	</TcpCont>
	<SvcCont/>
</ContractRoot>



你可能感兴趣的:(使用dom4j来解析相关的xml字符串)