使用xml4j xml与字符串之间转换

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>

 

转载于:https://www.cnblogs.com/guobm/p/9767116.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值