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

qq_16590545 Java开发工程师  2015-07-15 04:38:10
最近开发支付宝查询,遇到了它返回一个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>

希望知道的高手能以代码的形式指点一下,不要讲怎么怎么实现,我新手,确定自己写了半天没有写出来,谢谢
...全文
124 点赞 收藏 4
写回复
4 条回复
公孙二狗 2015年07月15日
把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;  
    }  
  
} 
回复 点赞
兔子托尼啊 2015年07月15日
回复 点赞
兔子托尼啊 2015年07月15日
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告