0
点赞
收藏
分享

微信扫一扫

XML编程


先看一个book.xml文件:

 

<?xml version="1.0" encoding="utf-8"?>

 


下面是对这个XML文件的一些常见操作:

1. package cn.itcast.dom4j;
2. import java.io.FileOutputStream;
3. import java.io.OutputStreamWriter;
4. import java.io.Writer;
5. import java.util.List;
6. import org.dom4j.Document;
7. import org.dom4j.DocumentException;
8. import org.dom4j.DocumentHelper;
9. import org.dom4j.Element;
10. import org.dom4j.io.OutputFormat;
11. import org.dom4j.io.SAXReader;
12. import org.dom4j.io.XMLWriter;
13. import org.junit.Test;
14. // Dom4j 增删改查
15. public class Dom4jDemo {
16. // 查找第一本书的名字
17. @Test
18. public void find() throws Exception {
19. // 1.创建解析器对象
20. SAXReader reader = new SAXReader();
21. // 2.解析一个xml
22. Document document = reader.read("src/book.xml");
23. // 3.获得根元素
24. Element rootElement = document.getRootElement();
25. // 4.获得书节点
26. Element bookElement = rootElement.element("书"); // 获得第一个指定名称的子节点
27. // 5.获得书名节点
28. Element booknameElement = bookElement.element("书名");
29. // 6.输出元素的内容
30. String text = booknameElement.getText();
31. System.out.println(text);
32. }
33. // 查找第二本书作者节点的name属性
34. @Test
35. public void findAttribute() throws Exception {
36. // 获得Document
37. Document document = Dom4jUtils.getDocument();
38. // 获得第二本书的作者节点
39. // 根元素
40. Element rootElement = document.getRootElement();
41. // 获得第二本书
42. List<Element> elements = rootElement.elements("书");
43. Element bookElement = elements.get(1);
44. // 获得作者
45. Element authorElement = bookElement.element("作者");
46. String value = authorElement.attributeValue("name");
47. System.out.println(value);
48. }
49. // 增加一个节点, 第二本书增加一个售价
50. @Test
51. public void add() throws Exception {
52. // 获得Document
53. Document document = Dom4jUtils.getDocument();
54. // 获得根元素
55. Element rootElement = document.getRootElement();
56. // 获得第二本书
57. Element bookElement = (Element) rootElement.elements("书").get(1);
58. /* 传统方式
59. // 创建一个售价节点
60. Element priceElement = DocumentHelper.createElement("售价");
61. // 添加内容
62. priceElement.setText("108元");
63. // 加到书节点下面
64. bookElement.add(priceElement);*/
65. // addElement方法创建了新元素,添加到当前元素下面,返回了新创建的元素
66. bookElement.addElement("售价").setText("108元");
67. // 写入xml
68. Dom4jUtils.write2Xml(document);
69. }
70. //增加一个属性
71. @Test
72. public void addAttribute() throws Exception {
73. // 获得Document
74. Document document = Dom4jUtils.getDocument();
75. // 获得根元素
76. Element rootElement = document.getRootElement();
77. // 获得第一个作者
78. Element author = rootElement.element("书").element("作者");
79. // 增加一个属性
80. author.addAttribute("name", "zxx");
81. // 写入文件
82. Dom4jUtils.write2Xml(document);
83. }
84. //删除一个节点
85. @Test
86. public void remove() throws Exception {
87. // 获得Document
88. Document document = Dom4jUtils.getDocument();
89. // 获得根元素
90. Element rootElement = document.getRootElement();
91. // 获得第二本书的第二个售价节点
92. Element priceElement = (Element) ((Element) rootElement.elements("书").get(1)).elements("售价").get(1);
93. // 获得它的父节点删除自身
94. priceElement.getParent().remove(priceElement);
95. // 写入文件
96. Dom4jUtils.write2Xml(document);
97. }
98. }





Dom4jUtils.java文件:

package cn.itcast.dom4j;



import java.io.FileNotFoundException;



import java.io.FileOutputStream;



import java.io.UnsupportedEncodingException;



import org.dom4j.Document;



import org.dom4j.DocumentException;



import org.dom4j.io.OutputFormat;



import org.dom4j.io.SAXReader;



import org.dom4j.io.XMLWriter;



public class Dom4jUtils {



// 获得document对象



public static Document getDocument() throws DocumentException {



// 1.创建解析器对象



SAXReader reader = new SAXReader();



// 2.解析一个xml



return reader.read("src/book.xml");



}







public static void write2Xml(Document document) throws Exception {



// 写入xml



// FileWriter流默认是用gb2312编码



//FileWriter out = new FileWriter("src/book.xml");



/* 快捷的输出方式



Writer out = new OutputStreamWriter(new FileOutputStream("src/book.xml"), "utf-8");



document.write(out);







out.close();*/



// 带格式化的输出方式



OutputFormat format = OutputFormat.createPrettyPrint();



format.setEncoding("utf-8");



/*Writer out = new OutputStreamWriter(new FileOutputStream("src/book.xml"), "utf-8");



XMLWriter writer = new XMLWriter(out, format);*/



XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format);







writer.write(document);



writer.close();



}



}

举报

相关推荐

0 条评论