jar准备:dom4j-2.1.1.jar  jaxen-1.1.6.jar

jaxen/jaxen/ Maven依赖写法

<dependency>
  <groupId>jaxen</groupId>
  <artifactId>jaxen</artifactId>
  <version>1.1.6</version>
</dependency>

<dependency>
  <groupId>org.dom4j</groupId>
  <artifactId>com.springsource.org.dom4j</artifactId>
  <version>2.1.1</version>
</dependency>

1 字符串转对象步骤如下:

 1 package xml;
2
3 import org.dom4j.Document;
4 import org.dom4j.DocumentHelper;
5 import org.dom4j.Element;
6 import utils.ClassRoom;
7 import utils.Person;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 public class ParseXmlStringToBean {
13
14 private static String getPropetyValue(Document doc, String rootPath, String defaultValue) {
15 if (doc.selectNodes(rootPath).size() == 0) {
16 return defaultValue;
17 }
18 return ((Element) doc.selectNodes(rootPath).get(0)).getText();
19 }
20
21 private static int getPropetyValue(Document doc, String rootPath, int defaultValue) {
22 if (doc.selectNodes(rootPath).size() == 0) {
23 return defaultValue;
24 }
25 return Integer.parseInt(((Element) doc.selectNodes(rootPath).get(0)).getText());
26 }
27
28 private static List<Person> parsePerson(Document doc, String rootPath) {
29 if (doc.selectNodes(rootPath).size() == 0) {
30 return null;
31 }
32 int size = doc.selectNodes(rootPath).size();
33 List<Person> personList = new ArrayList<Person>();
34 for (int i = 0; i < size; i++) {
35 Person person = new Person();
36 person.setName(((Element) doc.selectNodes(rootPath + "/" + "name").get(i)).getText());
37 person.setSex(((Element) doc.selectNodes(rootPath + "/" + "sex").get(i)).getText());
38 person.setAge(Integer.parseInt(((Element) doc.selectNodes(rootPath + "/" + "age").get(i)).getText()));
39 personList.add(person);
40 }
41 return personList;
42 }
43
44 private static ClassRoom parseXmlString(String context) throws Exception {
45 ClassRoom classRoom = new ClassRoom();
46 Document doc = DocumentHelper.parseText(context);
47
48 classRoom.setClassName(getPropetyValue(doc, "/data/className", ""));
49 classRoom.setTotalNum(getPropetyValue(doc, "/data/ret_Code", 0));
50 classRoom.setPersonList(parsePerson(doc, "/data/list/items/item"));
51 return classRoom;
52 }
53
54 public static void main(String[] args) throws Exception {
55 String classContent = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n" +
56 "<data><className>1班</className><totailNum>3</totailNum><list><items><item><name>张三</name><sex>男</sex><age>44</age></item><item><name>李四</name><sex>男</sex><age>42</age></item><item><name>王五</name><sex>男</sex><age>22</age></item></items></list></data>\n";
57
58 parseXmlString(classContent);
59 }
60 }

2 对象转字符串

 1 package xml;
2
3 import org.dom4j.Document;
4 import org.dom4j.DocumentHelper;
5 import org.dom4j.Element;
6 import utils.ClassRoom;
7 import utils.Person;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 public class WriteXmlToString {
13
14 private static String writePersonXml(Person person) {
15 Document doc = DocumentHelper.createDocument();
16 doc.setXMLEncoding("GBK");
17
18 Element root = doc.addElement("data");
19 root.addElement("name").addText(person.getName());
20 root.addElement("sex").addText(person.getSex());
21 root.addElement("age").addText(String.valueOf(person.getAge()));
22 return doc.asXML();
23 }
24
25 private static String writeClassXml(ClassRoom classRoom) {
26 Document doc = DocumentHelper.createDocument();
27 doc.setXMLEncoding("GBK");
28
29 Element root = doc.addElement("data");
30 root.addElement("className").addText(classRoom.getClassName());
31 root.addElement("totailNum").addText(String.valueOf(classRoom.getTotalNum()));
32 Element perList = root.addElement("list");
33 Element perItems = perList.addElement("items");
34 for (Person person : classRoom.getPersonList()) {
35 Element perItem = perList.addElement("item");
36 perItem.addElement("name").addText(person.getName());
37 perItem.addElement("sex").addText(person.getSex());
38 perItem.addElement("age").addText(String.valueOf(person.getAge()));
39 }
40 return doc.asXML();
41 }
42
43 public static void main(String[] args) {
44 String content = writePersonXml(new Person("张三", "男", 44));
45 System.out.println(content);
46
47 List<Person> personList = new ArrayList<Person>();
48 personList.add(new Person("张三", "男", 44));
49 personList.add(new Person("李四", "男", 42));
50 personList.add(new Person("王五", "男", 22));
51 ClassRoom classRoom = new ClassRoom("1班", personList.size(), personList);
52 String classContent = writeClassXml(classRoom);
53 System.out.println(classContent);
54 }
55 }

运行结果

<?xml version="1.0" encoding="GBK"?>
<data>
<name>张三</name>
<sex>男</sex>
<age>44</age>
</data>

<?xml version="1.0" encoding="GBK"?>
<data>
<className>1班</className><totailNum>3</totailNum>
<list>
<items>
<item><name>张三</name><sex>男</sex><age>44</age></item>
<item><name>李四</name><sex>男</sex><age>42</age></item>
<item><name>王五</name><sex>男</sex><age>22</age></item>
</items>
</list>
</data>

使用xml4j xml与字符串之间转换的更多相关文章

  1. Python: 在Unicode和普通字符串之间转换

    Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding): <!-- Inject Script Filtered --> Toggle line nu ...

  2. Python——在Unicode和普通字符串之间转换

    1.1. 问题 Problem You need to deal with data that doesn't fit in the ASCII character set. 你需要处理不适合用ASC ...

  3. 普通字符串与Hex编码字符串之间转换

    import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...

  4. char*、string、CString各种字符串之间转换

    参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...

  5. Flex 日期和字符串之间转换

    字符串转为日期: var dateTime:Date= DateField.stringToDate(deTime, "YYYY-MM-DD");//"YYYY-MM-D ...

  6. jquery的json对象与字符串之间转换

    json对象----- >>字符串 JSON.stringify(obj) json字符串------>>json对象 JSON.parse(string) 公众号 欢迎关注我 ...

  7. c#实现16进制和字符串之间转换的代码

    以下示例演示如何执行下列任务: 获取字符串中每个字符的十六进制值. 获取与十六进制字符串中的每个值对应的字符. 将十六进制 string 转换为整型. 将十六进制 string 转换为浮点型. 将字节 ...

  8. javascript数组与字符串之间转换

    一.数组转字符串(将数组元素用某个字符连接成字符串) var a, b;a = new Array(0,1,2,3,4);b = a.join("-"); 二.字符串转数组(将字符 ...

  9. C# 字节数组和十六进制字符串之间转换的另类写法

    今天从http://www.cnblogs.com/NanaLich/archive/2012/05/24/2516860.html看到的,记录下来 主要是XmlSerializationReader ...

随机推荐

  1. python 缺失值处理(Imputation)

    一.缺失值的处理方法 由于各种各样的原因,真实世界中的许多数据集都包含缺失数据,这些数据经常被编码成空格.nans或者是其他的占位符.但是这样的数据集并不能被scikit - learn算法兼容,因为 ...

  2. Vmware下Kali设置桥接网络无法上网

    1.检查是否设置桥接 2.编辑>首选项>虚拟网络编辑器>选对本机上网的网卡 3.检查上网的网卡>适配器属性栏有没有 Vmware Bridge Protocol 桥接的服务. ...

  3. spring与shiro配置详解

    1.加入shiro相关依赖的jar包 pom.xml部分内容如下: <dependency> <groupId>org.apache.shiro</groupId> ...

  4. github访问慢加速访问

    实测从1kb到了1m多 方法: 登录 https://www.ipaddress.com/ 输入github.com得到一个或两个IP地址 输入github.global.ssl.fastly.net ...

  5. Go语言目录

    为什么学习Go语言 第一章 环境搭建 Windows搭建Go语言环境 第二章 Go语言基础 Go语言介绍 Go语言命名 Go语言内置类型和函数 Go语言特殊函数介绍 Go语言运算符 第三章 Go语言程 ...

  6. Codeforces - 149D 不错的区间DP

    题意:有一个字符串 s. 这个字符串是一个完全匹配的括号序列.在这个完全匹配的括号序列里,每个括号都有一个和它匹配的括号 你现在可以给这个匹配的括号序列中的括号染色,且有三个要求: 每个括号只有三种情 ...

  7. 分享一个电子发票信息提取工具(Python)

    电子发票太多,想统计下总额异常困难,网上工具不好用,花了2个小时实现一份,测试过中石油.京东开具的电子发票还行,部分发票名称失败有问题不影响统计,有需要的小伙伴自己拿去改吧. import cmd i ...

  8. [转] 如何在 CentOS7 中使用阿里云的yum源

    [From] https://www.cnblogs.com/lpbottle/p/7875400.html 1. 备份原来的yum源 mv /etc/yum.repos.d/CentOS-Base. ...

  9. 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案

    方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...

  10. Json&XML比较

    1.定义 1.1 XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用 ...