zoukankan      html  css  js  c++  java
  • dom4j 常用操作

    package com.wanbang.wbyyb.common.util;
    
    import com.alibaba.fastjson.JSONObject;
    import com.wanbang.wbyyb.common.constant.ErrorEnum;
    import com.wanbang.wbyyb.common.exception.BusinessException;
    import com.wanbang.wbyyb.service.payment.impl.PaymentServiceImpl;
    import org.apache.commons.codec.digest.DigestUtils;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.Resource;
    import org.springframework.util.StringUtils;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class XmlUtils {
        private static final Logger logger = LoggerFactory.getLogger(PaymentServiceImpl.class);
    
        /**
         * 根据xml标签名的ASCII码正序排列的xml
         * @param filePath
         * @return
         */
        public static Document getXml(String filePath){
            Document document = null;
            try{
                Resource resource = null;
                if (!StringUtils.isEmpty(filePath))
                    resource = new ClassPathResource(filePath);
                else
                    throw new BusinessException(ErrorEnum.ERROR_PARAM);
    
                File file = resource.getFile();
    
                /**
                 * 读取xml转有序map
                 */
                SAXReader reader = new SAXReader();
                Document doc = reader.read(file);
                Element root = doc.getRootElement();
                Iterator iterator = root.elementIterator();
                Map<String,Object> map =  new TreeMap<>();
                while (iterator.hasNext()) {
                    Element element = (Element) iterator.next();
                    String key = element.getName();
                    String value = element.getText();
                    map.put(key, value);
                }
    
                /**
                 * 有序map转xml
                 */
                document = DocumentHelper.createDocument();
                Element newRoot = document.addElement("xml");
                Set<String> keys = map.keySet();
                for(String k:keys) {
                    newRoot.addElement(k).addText(map.get(k).toString());
                }
            } catch (IOException e) {
                logger.error("com.wanbang.wbyyb.service.payment.impl: ",e);
            } catch (DocumentException e) {
                logger.error("com.wanbang.wbyyb.service.payment.impl:",e);
            }
            return document;
        }public static Object xml2Json(String xmlStr){
            JSONObject jsonObject = new JSONObject();
            try {
                Document document = DocumentHelper.parseText(xmlStr);
                Element element = document.getRootElement();
                Iterator iterator = element.elementIterator();
                while (iterator.hasNext()) {
                    Element ele = (Element)iterator.next();
                    jsonObject.put(ele.getName(), ele.getText());
                }
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            return jsonObject;
        }


    
    
    }
        @Test
        public void createTest() {
            Document doc = DocumentHelper.createDocument();
            //创建一个名为xml的根节点,因为是第一个创建,所以是根节点,再通过doc创建一个则会报错。
            Element root = doc.addElement("xml");
            Element codeEle = root.addElement("return_code");
            Element msg = root.addElement("return_msg");
            codeEle.addCDATA("SUCCESS");  //生成结果<return_code><![CDATA[SUCCESS]]></return_code>
            codeEle.addAttribute("id", "101"); //添加属性
            msg.setText("SUCCESS"); //生成结果<return_code>SUCCESS</return_code>
            msg.setText("<![CDATA[SUCCESS]]>"); //生成结果<return_msg>&lt;![CDATA[SUCCESS]]&gt;</return_msg>
            System.out.println(doc.asXML());  //xml转String
        }
  • 相关阅读:
    树链剖分( 洛谷P3384 )
    ZJOI 2015 诸神眷顾的幻想乡
    BZOJ 1002 [FJOI2007]轮状病毒
    洛谷 P1485 火枪打怪
    Luogu2860 [USACO06JAN]冗余路径Redundant Paths
    CF962F Simple Cycles Edges
    Luogu3605 [USACO17JAN]Promotion Counting晋升者计数
    Luogu2295 MICE
    CF341D Iahub and Xors
    CF617E XOR and Favorite Number
  • 原文地址:https://www.cnblogs.com/jxlsblog/p/dom4j.html
Copyright © 2011-2022 走看看