快捷搜索:  汽车  科技

用dom解析xml:Java使用dom4j解析Xml文件

用dom解析xml:Java使用dom4j解析Xml文件若是多个文件,可以用下面方法读取read()方法可以给一个文件路径 也可以给一个File的对象SAXReader reader = new SAXReader();2、读取XML文件结构Document doc = reader.read(new File(XML_PATH));

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点

用dom解析xml:Java使用dom4j解析Xml文件(1)

pom.xml中需要添加的dom4j的jar包依赖

<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>

test.xml

<?xml version = "1.0" encoding="UTF-8"?> <property> <proc> <datasource>jdbc:oracle:thin:@//127.0.0.1:1521/proc_data</datasource> <username>proc_user</username> <password>proc_user</password> <mapperlocation>/proc/*.xml</mapperlocation> </proc> <test> <datasource>jdbc:oracle:thin:@//127.0.0.1:1521/test_data</datasource> <username>test_user</username> <password>test_user</password> <mapperlocation>/test/*.xml</mapperlocation> </test> </property>

用dom解析xml:Java使用dom4j解析Xml文件(2)

解析步骤

1、创建SAXreader对象

SAXReader reader = new SAXReader();

2、读取XML文件结构

Document doc = reader.read(new File(XML_PATH));

read()方法可以给一个文件路径 也可以给一个File的对象

若是多个文件,可以用下面方法读取

Resource[] resources = new PathMatchingResourcePatternResolver()

.getResources("classpath:"test/**/*.xml");

for (Resource res : resources) {

Document document = reader.read(res.getInputStream());

}

3、获取根节点

Element root = doc.getRootElement();

4、获取节点下的元素

List<Element> childList =root.elements();

//获取属性名称、属性值的方法

获取当前元素指定名称的子元素

root.element(String name)

获取当前元素的名称

root.getName()

获取当前元素的内容

root.getText()

root.getTextTrim() //去掉空格后的文本

获取当前元素下指定名称的子元素内容

root.elementText(String name)

获取当前元素的值

root.getStringValue();

具体代码实现,

注意:这个适用与熟悉xml文件的格式,标签属性的时候,根据实际需要,按属性判断实现具体的逻辑

/** * */ package com.mundo.monkey.util; import java.io.File; import java.util.List; import org.apache.commons.lang3.exception.ExceptionUtils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @ClassName: XmlUtil * @Description:dom4j解析xml文件 * @author Mundo */ public class XmlUtil { private static final Logger logger = LoggerFactory.getLogger(XmlUtil.class); private static final String XML_PATH = "C:\\workspace\\Monkey\\Monkey\\src\\main\\resources\\xml\\test.xml"; // 解析test.xml文件 @SuppressWarnings({ "unchecked" }) public static void main(String[] args) { try { // 创建SAXReader对象 SAXReader reader = new SAXReader(); // 读取XML文件结构 Document doc = reader.read(new File(XML_PATH)); // 获取XML文件根节点 Element root = doc.getRootElement(); // 获取根节点一下的子元素 List<Element> list = root.elements(); for (Element item : list) { /** * 实际开发中,可以在接下来的代码中,写相应的逻辑判断 */ if ("proc".equals(item.getName())) { System.out.println("获取生产库配置信息"); // 获取当前节点下的子元素 List<Element> node = item.elements(); // 迭代子节点的元素值 for (Element element : node) { System.out.println("生产库属性:" element.getName() " ,属性值:" element.getStringValue()); } } else if ("test".equals(item.getName())) { System.out.println("获取测试库配置信息"); // 获取当前节点下的子元素 List<Element> node = item.elements(); // 迭代子节点的元素值 for (Element element : node) { System.out.println("测试库属性:" element.getName() " ,属性值:" element.getStringValue()); } } } } catch (Exception e) { System.out.println("xml文件解析失败,文件路径:" XML_PATH); logger.error(ExceptionUtils.getStackTrace(e)); } } }

用dom解析xml:Java使用dom4j解析Xml文件(3)

利用递归,获取xml文件所有的属性、属性值

/** * */ package com.mundo.monkey.util; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * @ClassName: XmlUtil2 * @Description: TODO * @author Mundo * @date 2019年2月24日 下午9:41:40 */ public class XmlUtil2 { @SuppressWarnings("rawtypes") public static void main(String[] args) { // 创建SAXReader的对象reader SAXReader reader = new SAXReader(); try { // 通过reader对象的read方法读取xml文件 获取docuemnt对象。 Document document = reader .read(new File("C:\\workspace\\Monkey\\Monkey\\src\\main\\resources\\xml\\test.xml")); // 通过document对象获取根节点 Element root = document.getRootElement(); // 通过element对象的elementIterator方法获取迭代器 Iterator it = root.elementIterator(); parseXml(root); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @SuppressWarnings("unchecked") public static void parseXml(Element node) { System.out.println("\n"); System.out.println("当前节点名称:" node.getName());// 当前节点名称 System.out.println("当前节点的内容:" node.getTextTrim());// 当前节点名称 // 递归遍历当前节点所有的子节点 List<Element> listElement = node.elements();// 所有一级子节点的list for (Element e : listElement) {// 遍历所有一级子节点 parseXml(e);// 递归 } } }

用dom解析xml:Java使用dom4j解析Xml文件(4)

每天进步一点点,你侬我侬不如码农,欢迎评论转发,欢迎关注,定时更新web开发经验,一起进步,一起提高!

猜您喜欢: