xml文件的读写

1、POST请求——读取xml文件

(1)根据请求参数,调用HttpServletRequest的getAttribute(String attri)方法读取xml的内容

           String xmlContent = request.getAttribute(Constants.REQUEST_CONTENT);

定义StringReader

            StringReader sr = new StringReader(xmlContent);

定义SAXReader

            SAXReader saxReader = new SAXReader();

通过SAXReader将xml的所有内容以Document的形式读出

            Document document = saxReader.read(sr);

查找根节点Element  root

            Element root = document.getRootElement();

查找根节点对应的不同子节点,如recentElement(其名为CompatibleConstants.RECENT_TYPE)

            Element recentElement = root.element(CompatibleConstants.RECENT_TYPE);

找到recentElement下面的指定格式的Element,如modifyElement(其名为CompatibleConstants.MODIFY_XML

            Element modifyElement = typeElement.element(CompatibleConstants.MODIFY_XML);
查找modifyElement下的所有Element
            List<Element> items = modifyElement.elements();

针对不同的Element,获取其List<Attribute>
            if(null != items && !items.isEmpty()){
                for (Element item : items) {    //遍历每个Item
                    List<Attribute> ltAttr = item.attributes();
                    if(null == ltAttr || ltAttr.isEmpty()){
                        continue;
                    }

             }
Attribute中对应的是一个Map.Entry<K, V>,分别调用Attribute的getName()和getValue()方法获取其key and value
            Map<String, String> mapAttr = new HashMap<String, String>(ltAttr.size());
            for (Attribute attr : ltAttr) {
            String attrName = attr.getName();
            String attrValue = attr.getValue();
            if(!HistoryConstants.EPG_FILTER.contains(attrName)){//过滤epg信息
                mapAttr.put(attrName, attrValue);
             }



2、写xm文件

写xml的文件头"

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n

          <root ret=\"1\" msg=\"\" etag=\"" + md5 + "\">\r\n"

         + xml + "\r\n

</root>"

其中md5代表了etag的值,xml是实际需要填入的各Element值

向xml中写入不同Element

定义Document

       Document document = DocumentHelper.createDocument();

向document中添加根节点(其下有很多子Element)

       Element element = document.addElement(type);
循环向element下 添加子element     

for (Map<String, String> recent : ltMapHistory) {
                Element item = element.addElement("Item");

为每一个element设置Attribute

               for (Entry<String, String> entry : recent.entrySet()) {
                    String key = entry.getKey();
                    String value = entry.getValue();
                    item.addAttribute(key, value);
                }
                
            }
        }
 以xml格式返回document
        return document.getRootElement().asXML();


3、将xml作为response返回

    public static void sendXMLResponse(HttpServletResponse response, int status, String xml){
        response.setContentType("text/xml; charset=UTF-8");
        response.setHeader("Cache-Control","no-cache");    
        response.setStatus(status);
        PrintWriter out;
        try {
            out = response.getWriter();
            out.println(xml);
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }        
        
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值