常用代码片段-xml文件的解析和封装

微信用xml来进行消息的传递,所以需要在获取到HttpServletRequest对象之后,进行xml解析。还需要在处理完毕之后,将返回的信息组装成xml文件返回给客户端。编码格式必须为
utf-8


xml文件解析

public static Map<String,String> paresXML(HttpServletRequest request){
    //创建map集合存储解析的数据
    Map<String,String> map = new HashMap<>();
    //从request对象中获取输入流
    InputStream in = request.getInputStream();
    //读取输入流
    SAXReader sax = new SAXReader();
    //创建Document元素  因为微信公众号是以xml进行信息传递
    Document doc = sax.read(in);
    //获取根元素
    Element root = doc.getRootElement();
    //得到根元素的所有子节点
    List<Element> elements = root.elements();
    for(Element ele : elements){
        map.put(ele.getName(),ele.getText());
    }
    //关闭流
    in.close();
    return map;
}

xml文件封装

xml文件封装最原始的做法是根据类对象进行参数的遍历和拼装,可以使用dom4j。
现在可以直接使用
com.thoughtworks.xstream.XStream类进行组织。
因为使用xml传递数据所以要防止在返回数据中包含“>”“<”之类的内容,所以需要

<![CDATA[text]]>块对返回的内容进行封装。
private static XStream xstream = new XStream(
    new XppDriver(){
         public HierarchicalStream createWriter(Writer out){
            //需要对所有内容进行标记
            boolean cdata = true;
            public void startNode(String name,Class clazz){
                super. startNode(name,clazz);
            }
             protected void writeText(QuickWriter writer,String text){
                 if(cdata){
                     writer.write("<![CDATA[");
                     writer.write(text);
                     writer.write("]]>");
                 }else{
                     writer.write(text);
                 }
                 
             }
             
             
         };  
    }
);

然后在封装xml的时候,直接
xstream.alias(“xml”,obj.class);
String responseXml = xstream.toXML(obj);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值