JAVA使用Dom4j实现字符串和xml文件相互转换

本文介绍了如何使用Dom4j库进行XML文档或节点的字符串转换,包括从文件读取到字符串、节点到字符串、以及字符串到Document对象的转换流程。同时展示了如何通过Dom4j新建Document对象并写入文件,使得XML文档创建变得简易。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



在文章《JAVA 使用Dom4j 解析XML》中,介绍了使用Dom44j解析XML,比如节点的解析遍历、节点的增加、删除、写入文件等操作,本文我们继续使用dom4j实现xml字符串与xml文件之间的转换。

1、xml文档或节点转换为字符串

(1)代码

  1. //xml文档或节点转换为字符串
  2. @Test
  3. publicvoidtest5()throwsException{
  4. //创建SAXReader对象
  5. SAXReaderreader=newSAXReader();
  6. //读取文件转换成Document
  7. Documentdocument=reader.read(newFile("src/cn/com/yy/dom4j/s.xml"));
  8. //document转换为String字符串
  9. StringdocumentStr=document.asXML();
  10. System.out.println("document字符串:"+documentStr);
  11. //获取根节点
  12. Elementroot=document.getRootElement();
  13. //根节点转换为String字符串
  14. StringrootStr=root.asXML();
  15. System.out.println("root字符串:"+rootStr);
  16. //获取其中student1节点
  17. Elementstudent1Node=root.element("student1");
  18. //student1节点转换为String字符串
  19. Stringstudent1Str=student1Node.asXML();
  20. System.out.println("student1字符串:"+student1Str);
  21. }
//xml文档或节点转换为字符串
	@Test
	public void test5()throws Exception{
		//创建SAXReader对象
		SAXReader reader = new SAXReader();
		//读取文件 转换成Document
		Document document = reader.read(new File("src/cn/com/yy/dom4j/s.xml"));
		//document转换为String字符串
		String documentStr = document.asXML();
		System.out.println("document 字符串:" + documentStr);
		//获取根节点
		Element root = document.getRootElement();
		//根节点转换为String字符串
		String rootStr = root.asXML();
		System.out.println("root 字符串:" + rootStr);
		//获取其中student1节点
		Element student1Node = root.element("student1");
		//student1节点转换为String字符串
		String student1Str = student1Node.asXML();
		System.out.println("student1 字符串:" + student1Str);
	}

(2)结果
  1. document字符串:<?xmlversion="1.0"encoding="UTF-8"?>
  2. <students>
  3. <student1id="001">
  4. <微信公众号>@残缺的孤独</微信公众号>
  5. <学号>20140101</学号>
  6. <地址>北京海淀区</地址>
  7. <座右铭>要么强大,要么听话</座右铭>
  8. </student1>
  9. <student2id="002">
  10. <新浪微博>@残缺的孤独</新浪微博>
  11. <学号>20140102</学号>
  12. <地址>北京朝阳区</地址>
  13. <座右铭>在哭泣中学会坚强</座右铭>
  14. </student2>
  15. </students>
  16. root字符串:<students>
  17. <student1id="001">
  18. <微信公众号>@残缺的孤独</微信公众号>
  19. <学号>20140101</学号>
  20. <地址>北京海淀区</地址>
  21. <座右铭>要么强大,要么听话</座右铭>
  22. </student1>
  23. <student2id="002">
  24. <新浪微博>@残缺的孤独</新浪微博>
  25. <学号>20140102</学号>
  26. <地址>北京朝阳区</地址>
  27. <座右铭>在哭泣中学会坚强</座右铭>
  28. </student2>
  29. </students>
  30. student1字符串:<student1id="001">
  31. <微信公众号>@残缺的孤独</微信公众号>
  32. <学号>20140101</学号>
  33. <地址>北京海淀区</地址>
  34. <座右铭>要么强大,要么听话</座右铭>
  35. </student1>
document 字符串:<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student1 id="001">
		<微信公众号>@残缺的孤独</微信公众号>
		<学号>20140101</学号>
		<地址>北京海淀区</地址>
		<座右铭>要么强大,要么听话</座右铭>
	</student1>
	<student2 id="002">
		<新浪微博>@残缺的孤独</新浪微博>
		<学号>20140102</学号>
		<地址>北京朝阳区</地址>
		<座右铭>在哭泣中学会坚强</座右铭>
	</student2>
</students>
root 字符串:<students>
	<student1 id="001">
		<微信公众号>@残缺的孤独</微信公众号>
		<学号>20140101</学号>
		<地址>北京海淀区</地址>
		<座右铭>要么强大,要么听话</座右铭>
	</student1>
	<student2 id="002">
		<新浪微博>@残缺的孤独</新浪微博>
		<学号>20140102</学号>
		<地址>北京朝阳区</地址>
		<座右铭>在哭泣中学会坚强</座右铭>
	</student2>
</students>
student1 字符串:<student1 id="001">
		<微信公众号>@残缺的孤独</微信公众号>
		<学号>20140101</学号>
		<地址>北京海淀区</地址>
		<座右铭>要么强大,要么听话</座右铭>
	</student1>
(3)其中s.xml文件如下
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <students>
  3. <student1id="001">
  4. <微信公众号>@残缺的孤独</微信公众号>
  5. <学号>20140101</学号>
  6. <地址>北京海淀区</地址>
  7. <座右铭>要么强大,要么听话</座右铭>
  8. </student1>
  9. <student2id="002">
  10. <新浪微博>@残缺的孤独</新浪微博>
  11. <学号>20140102</学号>
  12. <地址>北京朝阳区</地址>
  13. <座右铭>在哭泣中学会坚强</座右铭>
  14. </student2>
  15. </students>
<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student1 id="001">
		<微信公众号>@残缺的孤独</微信公众号>
		<学号>20140101</学号>
		<地址>北京海淀区</地址>
		<座右铭>要么强大,要么听话</座右铭>
	</student1>
	<student2 id="002">
		<新浪微博>@残缺的孤独</新浪微博>
		<学号>20140102</学号>
		<地址>北京朝阳区</地址>
		<座右铭>在哭泣中学会坚强</座右铭>
	</student2>
</students>
2、xml字符串转换为Document对象

(1)代码

  1. //xml字符串转换为Document对象
  2. @Test
  3. publicvoidtest6()throwsException{
  4. StringxmlStr="<employee><empname>@残缺的孤独</empname><age>25</age><title>软件开发工程师</title></employee>";
  5. Documentdocument=DocumentHelper.parseText(xmlStr);
  6. //写入emp1.xml文件
  7. writerDocumentToNewFile(document);
  8. }
//xml字符串转换为Document对象
	@Test
	public void test6()throws Exception{
		String xmlStr = "<employee><empname>@残缺的孤独</empname><age>25</age><title>软件开发工程师</title></employee>";
		Document document = DocumentHelper.parseText(xmlStr);
		//写入emp1.xml文件
		writerDocumentToNewFile(document);
	}

(2)结果
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <employee>
  3. <empname>@残缺的孤独</empname>
  4. <age>25</age>
  5. <title>软件开发工程师</title>
  6. </employee>
<?xml version="1.0" encoding="UTF-8"?>

<employee>
  <empname>@残缺的孤独</empname>
  <age>25</age>
  <title>软件开发工程师</title>
</employee>
3、新建Document

我们使用dom4j新建document对象,并写入文件中。

(1)代码

  1. //新建Document对象,添加节点元素并写入文件
  2. @Test
  3. publicvoidtest7()throwsException{
  4. Documentdocument=DocumentHelper.createDocument();
  5. ElementrootElement=document.addElement("employee");
  6. ElementempName=rootElement.addElement("empname");
  7. empName.setText("@残缺的孤独");
  8. ElementempAge=rootElement.addElement("age");
  9. empAge.setText("25");
  10. ElementempTitle=rootElement.addElement("title");
  11. empTitle.setText("软件开发工程师");
  12. //写入文档emp.xml
  13. writerDocumentToNewFile(document);
  14. }
//新建Document对象,添加节点元素并写入文件
	@Test
	public void test7()throws Exception{
		Document document = DocumentHelper.createDocument();
		Element rootElement = document.addElement("employee");
		Element empName = rootElement.addElement("empname");
		empName.setText("@残缺的孤独");
		Element empAge = rootElement.addElement("age");
		empAge.setText("25");
		Element empTitle = rootElement.addElement("title");
		empTitle.setText("软件开发工程师");
		//写入文档emp.xml
		writerDocumentToNewFile(document);
	}

(2)结果(emp.xml)
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <employee>
  3. <empname>@残缺的孤独</empname>
  4. <age>25</age>
  5. <title>软件开发工程师</title>
  6. </employee>
<?xml version="1.0" encoding="UTF-8"?>

<employee>
  <empname>@残缺的孤独</empname>
  <age>25</age>
  <title>软件开发工程师</title>
</employee>

从上可以看出,使用dom4j可以很容易的实现xml字符串与document之间的转换,并且创建document对象变得简易。

原文来自:http://blog.youkuaiyun.com/yyywyr/article/details/38361367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值