在平时java开发工作中,经常要用到xml文件保存相关的数据等,那么java如何解析XML文件呢?java本身提供了SAX和DOM方式对xml文件进行解析,另外还有两种开源工具对xml进行解析,分别是DOM4J和JDOM。
SAX:Simple API for XML
DOM:Document Object Model
JDOM:Java-based Document Object Model
DOM4J:Document Object Model for Java
现在的开发中,我们经常要用到DOM4J对XML文件进行解析,这是因为相比较而言,DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J。下面来看用DOM4J如何解析XML文件:
一、引包
引入dom4j-1.6.1.jar包,以确保能够正常使用dom4j解析XML文件。
二、解析XML文件
1、产生一个解析器对象
SAXReader reader = new SAXReader();
2、将xml文档转换为Document的对象
Document document = reader.read(new FIle(filePathName));
3、获取文档的根元素
Element root = document.getRootElement();
4、定义一个Iterator遍历根节点下面的所有节点
Iterator it = root.elementIterator();
while(it.hasNext()){
Element element = (Element) it.next();
//未知属性名称情况下,逐个遍历此元素的所有属性,取出属性对应的值
Iterator attrIt = element.attributeIterator();
while (attrIt.hasNext()) {
Attribute attr = (Attribute) attrIt.next();
System.out.println(attr.getValue());
}
//已知属性名称的情况下,可以直接通过属性名称获取对应的值
String name = element.attributeValue("name");//获取name属性对应的值
//同样可以遍历该元素下所有的节点,未知节点名称情况下,逐个遍历
Iterator it = element.elementIterator();
while(it.hasNext()){
Element e = (Element) it.next();
System.out.println(e.getName() + ": " + e.getText()); //获取节点名称以及节点对应的文本值
}
//已知节点名称nodeName的情况下,可以直接通过节点名称获取对应的值
String nodeValue = element.elementText(nodeName);
}
至此,DOM4J解析XML的功能就结束了。