在工作中有时候会用到dom4j对xml文件或者字符串进行解析, 以下内容为随手笔记, 防止以后遗忘.

1. 相关依赖
  1. <!-- dom4j -->
  2. <dependency>
  3. <groupId>dom4j</groupId>
  4. <artifactId>dom4j</artifactId>
  5. <version>1.6.1</version>
  6. </dependency>

2. 获取dom对象

获取dom对象方式主要以下几种:

  1. // 读取 xml 文件 方式
  2. SAXReader reader = new SAXReader();
  3. Document doc1 = reader.read(new File("src/main/java/com/liuzhihang/tool/xml/alipay.xml"));
  4. // 解析 xml 文本 方式
  5. String aliPayStr = XmlTest.getAliPayStr();
  6. Document doc2 = DocumentHelper.parseText(aliPayStr);
  7. // 主动创建
  8. Document doc3 = DocumentHelper.createDocument();
  9. Element element = doc3.addElement("Test");

3. 操作dom对象

当获取到dom对象后便可以通过以下方式对dom进行操作

  1. // 获取根节点
  2. Element rootElement = dom.getRootElement();
  3. // System.out.println(rootElement.getName());
  4. // 获取子节点
  5. Element element = rootElement.element("response").element("alipay");
  6. // System.out.println(element.asXML());
  7. // 获取节点的文字
  8. String text = element.element("alipay_buyer_login_id").getText();
  9. // System.out.println(text);
  10. // 获取节点下的所有节点 快捷键 iter / itco
  11. List elements = element.elements();
  12. // for (Object o : elements) {
  13. // Element tempElement = (Element) o;
  14. // System.out.println(tempElement.getName() + "\t" + tempElement.getText());
  15. // }
  16. // for (Iterator iterator = elements.iterator(); iterator.hasNext(); ) {
  17. // Element next = (Element)iterator.next();
  18. // System.out.println(next.getName() + "\t" + next.getText());
  19. // }
  20. // 获取节点下所有节点 Iterator对象 快捷键 itit
  21. Iterator iterator = element.elementIterator();
  22. // while (iterator.hasNext()) {
  23. // Element next = (Element)iterator.next();
  24. // System.out.println(next.getName() + "\t" + next.getText());
  25. // }
  26. // 添加节点
  27. Element testElement = element.addElement("testElement");
  28. // 指定添加文字
  29. testElement.setText("测试添加文字");
  30. System.out.println(element.asXML());
  31. // 删除节点
  32. boolean remove = element.remove(testElement);
  33. System.out.println(remove + "\n" + element.asXML());

4. 详细代码

Dom4jTest.java