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

来源:互联网 发布:三联送货单打印软件 编辑:程序博客网 时间:2024/06/08 03:45

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>



原创粉丝点击