Dom4j拼接xml字符串

3 篇文章 0 订阅
1 篇文章 0 订阅

http://www.cnblogs.com/macula/archive/2011/07/27/2118003.html

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.junit.Test;

public class XMLHelperTest{
   @Test
   public void createDocumentTest(){
     Document document = DocumentHelper.createDocument();
        document.setXMLEncoding("gb2312");
        Element rootElement = document.addElement("config");

        Element firstElement = rootElement.addElement("first");
        //out节点
        Element sonElement = firstElement.addElement("out");
        Element sameElement = null;

        sameElement = sonElement.addElement("Name");
        sameElement.addText("李四");

        sameElement = sonElement.addElement("Age");
        sameElement.addText("26");

        sameElement = sonElement.addElement("Gender");
        sameElement.addText("男");
        //in节点
        Element nextElement = firstElement.addElement("in");
        Element subElement = null;

        subElement = nextElement.addElement("SerialNo");
        subElement.addText("201700001");

        subElement = nextElement.addElement("Certificatetype");
        subElement.addText("0");

        subElement = nextElement.addElement("Certificateno");
        subElement.addText("220182");

        System.out.println(document.asXML());

   }
}

运行结果:

<?xml version="1.0" encoding="gb2312"?>
<config><first><out><Name>李四</Name><Age>26</Age><Gender></Gender></out><in><SerialNo>201700001</SerialNo><Certificatetype>0</Certificatetype><Certificateno>220182</Certificateno></in></first></config>

格式化结果:

<?xml version="1.0" encoding="gb2312"?>
<config>
    <first>
        <out>
            <Name>李四</Name>
            <Age>26</Age>
            <Gender></Gender>
        </out>
        <in>
            <SerialNo>201700001</SerialNo>
            <Certificatetype>0</Certificatetype>
            <Certificateno>220182</Certificateno>
        </in>
    </first>
</config>

2、动态拼接XML

   /**
     * <?xml version="1.0" encoding="GBK"?>
     * <TXT>
     *     <Sign>xxx</Sign>
     *     <Request>
     *         <Version>1.0</Version>
     *         <EditNo>001</EditNo>
     *         <MsgInfo>
     *             <Time>xxx</Time>
     *             <Name>xxx</Name>
     *             <CertNo>xxx</CertNo>
     *             <Mobile>188xxxxxx</Mobile>
     *         </MsgInfo>
     *     </Request>
     * </TXT>
     *
     * @return
     */
    public static Document createXML() {
        Document document = DocumentHelper.createDocument();
        document.setXMLEncoding("GBK");

        Element root = document.addElement("TXT");
        root.addElement("Sign");

        Element request = root.addElement("Request");
        request.addElement("Version");
        request.addElement("EditNo");
        request.addElement("MsgInfo");

        return document;
    }

    @Test
    public void testCreateXML(){
        Map<String,String> param = new LinkedHashMap<String, String>();

        param.put("Time", "20170101000000");
        param.put("Name", "李四");
        param.put("CertNo", "622848");
        param.put("Mobile", "1880431");

        Document document = createXML();

        Element root = document.getRootElement();获取document根节点
        root.element("Sign").setText("签名方式");

        Element request = root.element("Request");
        request.element("Version").setText("1.0");
        request.element("EditNo").setText("001");

        Element msgInfo = request.element("MsgInfo");

        for (Map.Entry<String,String> entry : param.entrySet()) {
           msgInfo.addElement(entry.getKey()).setText(entry.getValue());
        }

//        System.out.println(root.asXML());
//        System.out.println(request.asXML());
        System.out.println(document.asXML());

    }

运行结果:

<?xml version="1.0" encoding="GBK"?>
<TXT><Sign>签名方式</Sign><Request><Version>1.0</Version><EditNo>001</EditNo><MsgInfo><Time>20170101000000</Time><Name>李四</Name><CertNo>622848</CertNo><Mobile>1880431</Mobile></MsgInfo></Request></TXT>

3、拼接xml样例

<?xml version="1.0" encoding="UTF-8"?>
<result code="0000" msg="成功"/>
public static Document createResponseSuccessRoot(String code, String message)
    {
        Document document = DocumentHelper.createDocument();
        Element result = document.addElement("result");
        result.addAttribute("code", code);
        result.addAttribute("msg", message);
        return document;
    }

    @org.junit.Test
    public void testCreate() {
        Document doc = createResponseSuccessRoot("0000","成功");
        System.out.println(doc.asXML());
    }

4、拼接xml样例

<?xml version="1.0" encoding="UTF-8"?>
<result code="0000" msg="成功"><record code="0000" msg="成功"/></result>
public static void addContentByElement(Element element, Map content){
   Element resultElement = element.addElement("record");
   for (Iterator iterator = content.entrySet().iterator(); iterator.hasNext();){
      Entry entry = (Entry)iterator.next();
      resultElement.addAttribute((String) entry.getKey(), String.valueOf(entry.getValue()));
   }
   }

    @Test
    public void addContentByElement() {
        Map map = new HashMap();
        map.put("code", "0000");
        map.put("msg", "成功");
        Document doc = createResponseSuccessRoot("0000", "成功");
        addContentByElement(doc.getRootElement(), map);
        System.out.println(doc.asXML());
    }

5、将map转为xml

public static String createXmlByMap(Map param) {
    Document document = DocumentHelper.createDocument();
    document.setXMLEncoding("GBK");
    Element root = document.addElement("root");
    //1、遍历map
    for(Object key : param.keySet()){
        Element element = root.addElement((String) key);
        element.setText((String)param.get(key));
    }
    //2、遍历map
    Iterator iter = param.entrySet().iterator();
    while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry)iter.next();
        Element element = root.addElement((String) entry.getKey());
        element.setText((String) entry.getValue());
    }
    //3、遍历map
    for (Iterator iters = param.entrySet().iterator(); iters.hasNext();){
         Map.Entry entry = (Map.Entry)iters.next();
         Element element = root.addElement((String) entry.getKey());
         element.setText((String) entry.getValue());
    }
    return document.asXML();
}

6、将xml转成map

public static Map getMapByXml(String xml) throws DocumentException {

    Map returnMap = new HashMap();

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(xml));
    Element root = document.getRootElement();
    for (Iterator it = root.elementIterator(); it.hasNext();){
         Element element = (Element)it.next();
         returnMap.put(element.getName(), element.getText());
    }

    return returnMap;
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值