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)

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值