XML编程

网友投稿 707 2022-11-07

XML编程

XML编程

先看一个book.xml文件:

下面是对这个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. @Test18. public void find() throws Exception {19. // 1.创建解析器对象20. SAXReader reader = new SAXReader();21. // 2.解析一个xml22. 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. @Test35. public void findAttribute() throws Exception {36. // 获得Document37. Document document = Dom4jUtils.getDocument();38. // 获得第二本书的作者节点39. // 根元素40. Element rootElement = document.getRootElement();41. // 获得第二本书42. List 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. @Test51. public void add() throws Exception {52. // 获得Document53. 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. // 写入xml68. Dom4jUtils.write2Xml(document);69. }70. //增加一个属性71. @Test72. public void addAttribute() throws Exception {73. // 获得Document74. 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. @Test86. public void remove() throws Exception {87. // 获得Document88. 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(); } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Matlab|基于BP神经网络进行电力系统短期负荷预测
下一篇:android之Notification通知
相关文章

 发表评论

暂时没有评论,来抢沙发吧~