zoukankan      html  css  js  c++  java
  • dom4j解析XML

    dom4j解析XML

    CreateTime--2018年3月26日15:55:06

    Author:Marydon

    一、所需jar包

      dom4j-1.6.1.jar

    二、导入

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;

    三、具体操作

    1.字符串转document对象

      方式一:

    String result = "<Response><userName>Marydon</userName><error_text>成功</error_text></Response>";
    // 将字符串转换成document对象
    Document document = DocumentHelper.parseText(res);

      方式二:

    Document document2 = DocumentHelper.createDocument(); // 创建Document document 以xml的格式存放返回参数
    Element request = document2.addElement("Request"); // 在 document中 新建一个Request节点
    // 添加userId节点,并设值
    request.addElement("userId").setText("1");  

      方式三:

    StringBuilder sb = new StringBuilder();
    sb.append("<Request>").append("<userId>").append("1").append(</userId>).append("</Request>");
    // 将字符串转换成document对象
    Document document = DocumentHelper.parseText(sb.toString());

    2.将document对象转换成字符串 

      方式一:完全转换(头部信息+节点信息)

    // 将document对象转换成xml格式字符串
    String str = document.asXML().toString();

      str所代表的是:

    <?xml version="1.0" encoding="UTF-8"?>
    <Response><userName>Marydon</userName><error_text>成功</error_text></Response> 

      方式二:只获取节点信息

    // 将document对象转换成xml格式字符串
    String str = document.getRootElement().asXML().toString();

      str所代表的是:

    <Response><userName>Marydon</userName><error_text>成功</error_text></Response>

    3.举例说明

      将其封装成xml格式的数据

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;

      第一种方式:操作document对象

    // 返回xml格式数据
    // 方式一
    // 创建document对象
    Document document = DocumentHelper.createDocument();
    // 生成Response节点
    Element response = document.addElement("Response");
    // 添加子节点result_flag并将值设为0
    response.addElement("result_flag").setText("0");
    response.addElement("error_text").setText("成功");
    // 生成Result节点
    Element result = response.addElement("Result");
    result.addElement("un_value").setText("");
    // 设置token有效期(当天有效)
    result.addElement("valid_date").setText("2018-06-04");
    // 将document对象转换成xml格式字符串
    String xmlResult = document.asXML().toString();
    System.out.println(xmlResult);
    /*<?xml version="1.0" encoding="UTF-8"?>
    <Response><result_flag>0</result_flag><error_text>成功</error_text><Result><un_value></un_value><valid_date>2018-06-04</valid_date></Result></Response>*/

      第二种方式:字符串拼接

    // 方式二
    StringBuilder sb = new StringBuilder();
    sb.append("<Response>");
    sb.append("<result_flag>0</result_flag>");
    sb.append("<error_text>成功</error_text>");
    sb.append("<Result>");
    sb.append("<un_value></un_value>");
    sb.append("<valid_date>2018-06-04</valid_date>");
    sb.append("</Result>");
    sb.append("</Response>");
    // 用于存储返回xml信息
    xmlResult = sb.toString();
    Document bodyDoc = null;
    try {
        bodyDoc = DocumentHelper.parseText(xmlResult);
    } catch (DocumentException e) {
        e.printStackTrace();
    }
    xmlResult = bodyDoc.asXML();
    System.out.println(xmlResult);
    /*<?xml version="1.0" encoding="UTF-8"?>
    <Response><result_flag>0</result_flag><error_text>成功</error_text><Result><un_value/><valid_date>2018-06-04</valid_date></Result></Response>*/

    四、注意事项

      1.以接口的形式进行传输时,"&"是特殊符号,不能直接传,必须转义成"&amp;",否则报错;

      2.将字符串转换成document对象(xml格式)时,上面两种实现方式的区别:

      当所有的值都不为空时,转换结果一样;

      但当返回的标签的值为空字符串""时

      方式一,转换的是正常结果:

      方式二,转换异常,会自动转换成自闭合标签(ethnicity、birth_date、address)

  • 相关阅读:
    隆重推出PowerDesinger 12.1.0.1913破解补丁
    Glowcode 6.0 破解手记,.Net IL技术
    爬虫如何抓取到Asp.Net中__doPostBack获取新页面的数据
    谁是股市上的最大受益者
    带强名的.net程序反向工程后汇编中的问题总结
    让所有的实体店成为网店的体验店
    推出网站大鱼搜索
    利用搜索引擎技术抢注域名
    在程序中显示PDF文件不依赖于Arcobat Reader的PDF阅读器开发
    用开源Carrot2的后缀树算法做Web文本聚类
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/8652277.html
Copyright © 2011-2022 走看看