当前位置:   article > 正文

Java dom4j生成和解析XML_java dom4j pom

java dom4j pom

一)dom4j介绍

使用方式:在pom.xml中导入dom4j对应的jar

  1. <dependency>
  2. <groupId>dom4j</groupId>
  3. <artifactId>dom4j</artifactId>
  4. <version>1.6.1</version>
  5. </dependency>

 

优点:dom4j使Java生成和解析XML灵活性变高,并且代码易于维护

 

API操作类:

Document:表示xml文档信息,是一个树形结构

Eelment:表示xml的元素结点,提供一些操作其子元素方法的,如文本、属性、名称空间等

Attribute:表示元素结点中的属性

 

二)dom4j生成xml

实现步骤:

第一步:创建一个Document实例

Document doc = DocumentHelper.createDocument();

 

第二步:先添加一个根结点,然后再添加子结点,构造成一个树形结构

Element root = doc.addElement("root");

 

第三步:添加xml文件样式(也可自定义样式),并输出xml文件到指定的路径下

OutputFormat format = OutputFormat.createPrettyPrint();

XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
writer.write(doc);

 

实现源码:

  1. package com.oysept.xml;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.UnsupportedEncodingException;
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentHelper;
  9. import org.dom4j.Element;
  10. import org.dom4j.io.OutputFormat;
  11. import org.dom4j.io.XMLWriter;
  12. import org.jdom2.output.Format;
  13. /**
  14. * dom4j生成xml
  15. * @author ouyangjun
  16. */
  17. public class CreateDom4j {
  18. public static void main(String[] args) {
  19. // 执行dom4j生成xml方法
  20. createDom4j(new File("E:\\dom4j.xml"));
  21. }
  22. public static void createDom4j(File file) {
  23. try {
  24. // 创建一个Document实例
  25. Document doc = DocumentHelper.createDocument();
  26. // 添加根节点
  27. Element root = doc.addElement("root");
  28. // 在根节点下添加第一个子节点
  29. Element oneChildElement= root.addElement("person").addAttribute("attr", "root noe");
  30. oneChildElement.addElement("people")
  31. .addAttribute("attr", "child one")
  32. .addText("person one child one");
  33. oneChildElement.addElement("people")
  34. .addAttribute("attr", "child two")
  35. .addText("person one child two");
  36. // 在根节点下添加第一个子节点
  37. Element twoChildElement= root.addElement("person").addAttribute("attr", "root two");
  38. twoChildElement.addElement("people")
  39. .addAttribute("attr", "child one")
  40. .addText("person two child one");
  41. twoChildElement.addElement("people")
  42. .addAttribute("attr", "child two")
  43. .addText("person two child two");
  44. // xml格式化样式
  45. // OutputFormat format = OutputFormat.createPrettyPrint(); // 默认样式
  46. // 自定义xml样式
  47. OutputFormat format = new OutputFormat();
  48. format.setIndentSize(2); // 行缩进
  49. format.setNewlines(true); // 一个结点为一行
  50. format.setTrimText(true); // 去重空格
  51. format.setPadText(true);
  52. format.setNewLineAfterDeclaration(false); // 放置xml文件中第二行为空白行
  53. // 输出xml文件
  54. XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
  55. writer.write(doc);
  56. System.out.println("dom4j CreateDom4j success!");
  57. } catch (UnsupportedEncodingException e) {
  58. e.printStackTrace();
  59. } catch (FileNotFoundException e) {
  60. e.printStackTrace();
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. }
  64. }
  65. }

XML文件效果图:

 

三)dom4j解析xml

实现步骤:

第一步:创建一个SAXReader解析器

SAXReader reader = new SAXReader();

 

第二步:解析xml文件,重新构建成一个Document对象

Document doc = reader.read(file);

 

第三步:处理Document对象信息,在控制台打印

 

实现源码:

  1. package com.oysept.xml;
  2. import java.io.File;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import org.dom4j.Attribute;
  6. import org.dom4j.CDATA;
  7. import org.dom4j.Comment;
  8. import org.dom4j.Document;
  9. import org.dom4j.DocumentException;
  10. import org.dom4j.Element;
  11. import org.dom4j.Node;
  12. import org.dom4j.Text;
  13. import org.dom4j.io.SAXReader;
  14. /**
  15. * dom4j解析xml
  16. * @author ouyangjun
  17. */
  18. public class ParseDom4j {
  19. public static void main(String[] args) {
  20. // 执行dom4j解析xml方法
  21. parseDom4j(new File("E:\\dom4j.xml"));
  22. }
  23. public static void parseDom4j(File file) {
  24. try {
  25. // 创建一个SAXReader解析器
  26. SAXReader reader = new SAXReader();
  27. // 读取xml文件,转换成Document结点
  28. Document doc = reader.read(file);
  29. // 递归打印xml文档信息
  30. StringBuffer buffer = new StringBuffer();
  31. parseElement(doc.getRootElement(), buffer);
  32. System.out.println(buffer.toString());
  33. } catch (DocumentException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. @SuppressWarnings("unchecked")
  38. public static void parseElement(Element element, StringBuffer buffer) {
  39. buffer.append("<"+element.getName());
  40. List<Attribute> attrs = element.attributes();
  41. if (attrs != null) {
  42. for (Attribute attr : attrs) {
  43. buffer.append(" "+attr.getName()+"=\""+attr.getValue()+"\"");
  44. }
  45. }
  46. buffer.append(">");
  47. Iterator<Node> iterator = element.nodeIterator();
  48. while (iterator.hasNext()) {
  49. Node node = iterator.next();
  50. if (node instanceof Element) {
  51. Element eleNode = (Element) node;
  52. parseElement(eleNode, buffer);
  53. }
  54. if (node instanceof Text) {
  55. Text text = (Text) node;
  56. buffer.append(text.getText());
  57. }
  58. if (node instanceof CDATA) {
  59. CDATA dataNode = (CDATA) node;
  60. buffer.append(dataNode.getText());
  61. }
  62. if (node instanceof Comment) {
  63. Comment comNode = (Comment) node;
  64. buffer.append(comNode.getText());
  65. }
  66. }
  67. buffer.append("</"+element.getName()+">");
  68. }
  69. }

XML文件解析效果图打印:

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/817697
推荐阅读
相关标签
  

闽ICP备14008679号