在工作中有时候会用到dom4j对xml文件或者字符串进行解析, 以下内容为随手笔记, 防止以后遗忘.
1. 相关依赖
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
2. 获取dom对象
获取dom对象方式主要以下几种:
// 读取 xml 文件 方式
SAXReader reader = new SAXReader();
Document doc1 = reader.read(new File("src/main/java/com/liuzhihang/tool/xml/alipay.xml"));
// 解析 xml 文本 方式
String aliPayStr = XmlTest.getAliPayStr();
Document doc2 = DocumentHelper.parseText(aliPayStr);
// 主动创建
Document doc3 = DocumentHelper.createDocument();
Element element = doc3.addElement("Test");
3. 操作dom对象
当获取到dom对象后便可以通过以下方式对dom进行操作
// 获取根节点
Element rootElement = dom.getRootElement();
// System.out.println(rootElement.getName());
// 获取子节点
Element element = rootElement.element("response").element("alipay");
// System.out.println(element.asXML());
// 获取节点的文字
String text = element.element("alipay_buyer_login_id").getText();
// System.out.println(text);
// 获取节点下的所有节点 快捷键 iter / itco
List elements = element.elements();
// for (Object o : elements) {
// Element tempElement = (Element) o;
// System.out.println(tempElement.getName() + "\t" + tempElement.getText());
// }
// for (Iterator iterator = elements.iterator(); iterator.hasNext(); ) {
// Element next = (Element)iterator.next();
// System.out.println(next.getName() + "\t" + next.getText());
// }
// 获取节点下所有节点 Iterator对象 快捷键 itit
Iterator iterator = element.elementIterator();
// while (iterator.hasNext()) {
// Element next = (Element)iterator.next();
// System.out.println(next.getName() + "\t" + next.getText());
// }
// 添加节点
Element testElement = element.addElement("testElement");
// 指定添加文字
testElement.setText("测试添加文字");
System.out.println(element.asXML());
// 删除节点
boolean remove = element.remove(testElement);
System.out.println(remove + "\n" + element.asXML());