--解析xml的方式有四种:DOM解析,SAX解析,DOM4j解析,JDOM解析,其中DOM的解析方式使用是最普遍的,原因是DOM的易使用,代码量相对其他方法要少。
下面来看看DOM4j解析方法及条件:
所需jar包:
dom4j-1.6.1.jar 下载地址:https://dom4j.github.io/ 点击打开链接
jaxen-1.1-beta-6.jar 下载地址:http://vdisk.weibo.com/s/vtdqhEz8YYep 点击打开链接
package com.zking.xml;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlTest {
/*
* DOM4j解析XML文件
*/
public static void dom4j() throws Exception {
SAXReader saxReader = new SAXReader();// 实例化saxReader对象
String path = XmlTest.class.getResource("config.xml").getPath();// 获取xml所在的绝对路径
Document document = saxReader.read(path);// 读取xml的信息
Element element = document.getRootElement(); // 获取根节点的信息
Iterator<Element> le = element.elementIterator();// 去迭代根节点下面的子节点
while (le.hasNext()) {
Element e = le.next();// 获取根节点下的子节点信息
String name = e.getName();// 获取根节点下的子节点的名字
String value = e.attributeValue("属性名称"); // 获取根节点下的子节点的属性值
String text = e.getText(); // 获取根节点下的子节点的值
}
}
/*
* 附加(注意):xml文件在项目中存放位置 src根目录下
* 类名.class.getResourceAsStream("/config.xml"); 1.2.2 与读取配置文件的类在同一包
* 类名.class.getResourceAsStream("config2.xml"); 1.2.3 WEB-INF(或其子目录下)
* ServletContext application = this.getServletContext(); InputStream is =
* application.getResourceAsStream("/WEB-INF/config3.xml");
*/
/*
* XPATH解析xml文件
*/
public static void xpath() throws Exception {
SAXReader saxReader = new SAXReader();// 实例化saxReader对象
String path = XmlTest.class.getResource("config.xml").getPath();// 获取xml所在的绝对路径
Document document = saxReader.read(path);// 读取xml的信息
List<Element> le = document.selectNodes("/config/action/forward");// 选择节点查询信息,从根节点开始这里找到了forward节点
for (Element e : le) {
String name = e.getName();// 获取根节点下的子节点的名字
String value = e.attributeValue("属性名称"); // 获取根节点下的子节点的属性值
String text = e.getText(); // 获取根节点下的子节点的值
}
}
public static void main(String[] args) throws Exception {
/*
* DOM4j解析XML文件
*/
dom4j();
/*
* XPATH解析xml文件
*/
xpath();
}
}
由此可知:DOM4j是层层迭代,去获取节点的信息,每一层代表一个节点信息,从根节点开始去往子节点寻找,适合寻找多个节点的信息。
Xpath:是可以选择性去寻找节点的信息,适合寻找单个节点的信息
总而言之:这两者各有各的优势。。
好啦,程序小白就介绍到这里,希望对有大家哦~