JAVA 解析XML望高手代码指点一下

J2EE 码拜 10年前 (2015-07-18) 1406次浏览 0个评论

最近开发支付宝查询,遇到了它返回一个xml信息,我需要解析,有两种返回,一种是正常的,一种是错误的!我想创建一个方法只要把XML传进去,返回我一个map就可以了,map里面放的是xml里面的信息,还望高手代码指点一下!
1,正确的返回
   ?xml version=”1.0″ encoding=”utf-8″?> 
<alipay> 
    <is_success>T</is_success>  
    <request> 
        <param name=”trade_no”>2010073000030344</param>  
        <param name=”service”>single_trade_query</param>  
        <param name=”partner”>2088002007018916</param>  
    </request> 
    <response> 
        <trade> 
            <body>合同催款通知</body>  
            <buyer_email>ltrade008@alitest.com</buyer_email>  
            <buyer_id>2088102002723445</buyer_id>  
            <discount>0.00</discount>  
            <gmt_create>2010-07-30 12:26:33</gmt_create>  
            <gmt_last_modified_time>2010-07-30 12:30:29 
            </gmt_last_modified_time> 
            <gmt_payment>2010-07-30 12:30:29</gmt_payment>  
            <is_total_fee_adjust>F</is_total_fee_adjust>  
            <out_trade_no>1280463992953</out_trade_no>  
            <payment_type>1</payment_type>  
            <price>1.00</price>  
            <quantity>1</quantity>  
            <seller_email>chao.chenc1@alipay.com</seller_email>  
            <seller_id>2088002007018916</seller_id>  
            <subject>合同催款通知</subject>  
            <total_fee>1.00</total_fee>  
            <trade_no>2010073000030344</trade_no>  
            <trade_status>TRADE_FINISHED</trade_status>
            <use_coupon>F</use_coupon>  
        </trade> 
    </response> 
    <sign>56ae9c3286886f76e57e0993625c71fe</sign>  
    <sign_type>MD5</sign_type>  
</alipay> 

2。错误的返回
   <?xml version=”1.0″ encoding=”utf-8″?> 
  <alipay> 
      <is_success>F</is_success> 
      <error>TRADE_IS_NOT_EXIST</error> 
  </alipay> 

希望知道的高手能以代码的形式指点一下,不要讲怎么怎么实现,我新手,确定自己写了半天没有写出来,谢谢

10分

#1

这 
10分

#2

这个 
80分

#4

xml转换成map http://ziyu-1.iteye.com/blog/469003

package xml.dom4j;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.Iterator;  
import java.util.List;  
import java.util.Map;  
  
import org.dom4j.Document;  
import org.dom4j.Element;  
  
public class XmlUtils {  
      
    public static Map<String, Object> Dom2Map(Document doc){  
        Map<String, Object> map = new HashMap<String, Object>();  
        if(doc == null)  
            return map;  
        Element root = doc.getRootElement();  
        for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {  
            Element e = (Element) iterator.next();  
            //System.out.println(e.getName());  
            List list = e.elements();  
            if(list.size() > 0){  
                map.put(e.getName(), Dom2Map(e));  
            }else  
                map.put(e.getName(), e.getText());  
        }  
        return map;  
    }  
      
  
    public static Map Dom2Map(Element e){  
        Map map = new HashMap();  
        List list = e.elements();  
        if(list.size() > 0){  
            for (int i = 0;i < list.size(); i++) {  
                Element iter = (Element) list.get(i);  
                List mapList = new ArrayList();  
                  
                if(iter.elements().size() > 0){  
                    Map m = Dom2Map(iter);  
                    if(map.get(iter.getName()) != null){  
                        Object obj = map.get(iter.getName());  
                        if(!obj.getClass().getName().equals("java.util.ArrayList")){  
                            mapList = new ArrayList();  
                            mapList.add(obj);  
                            mapList.add(m);  
                        }  
                        if(obj.getClass().getName().equals("java.util.ArrayList")){  
                            mapList = (List) obj;  
                            mapList.add(m);  
                        }  
                        map.put(iter.getName(), mapList);  
                    }else  
                        map.put(iter.getName(), m);  
                }  
                else{  
                    if(map.get(iter.getName()) != null){  
                        Object obj = map.get(iter.getName());  
                        if(!obj.getClass().getName().equals("java.util.ArrayList")){  
                            mapList = new ArrayList();  
                            mapList.add(obj);  
                            mapList.add(iter.getText());  
                        }  
                        if(obj.getClass().getName().equals("java.util.ArrayList")){  
                            mapList = (List) obj;  
                            mapList.add(iter.getText());  
                        }  
                        map.put(iter.getName(), mapList);  
                    }else  
                        map.put(iter.getName(), iter.getText());  
                }  
            }  
        }else  
            map.put(e.getName(), e.getText());  
        return map;  
    }  
  
} 

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JAVA 解析XML望高手代码指点一下
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!