Java DOM4J解析器
介绍
DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。
优点
DOM4J使Java开发的灵活性和XML解析代码易于维护。它是轻量级的,快速的API。
DOM4J 类
DOM4J定义了几个Java类。以下是最常见的类:
Document - 表示整个XML文档。文档Document对象是通常被称为DOM树。
Element - 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。
Attribute - 表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。
Node - 代表元素,属性或处理指令
常见DOM4J的方法
当使用DOM4J,还有经常用到的几种方法:
SAXReader.read(xmlSource)() - 构建XML源的DOM4J文档。
Document.getRootElement() - 得到的XML的根元素。
Element.node(index) - 获得在元素特定索引XML节点。
Element.attributes() - 获取一个元素的所有属性。
Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
在使用Java的时候,发现获得指定节点的名称的时候不太方便,索性写了一个方法,方法如下:
[Java] 纯文本查看 复制代码 public class XMLParseUtils {
public static void main(String[] args) {
try {
Element rootNode = readXMLRoot("src\\DpnI5.xml");
Element foundNode=null;
Element hit_def = getNode(rootNode, "Hit_def", foundNode);
System.out.println(hit_def.getName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 根据文件路径获取xml根元素节点
*
* @param filePath 文件路径
* @return
* @throws Exception
*/
public static Element readXMLRoot(String filePath) throws Exception {
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document = reader.read(new File(filePath));
// 获取根节点元素对象
Element node = document.getRootElement();
return node;
}
/**
* 查询节点
* @param node 要查询数据的节点即根节点
* @param nodeString 要查询的节点的名字
* @param nodeFound 要查询的节点。传null即可
* @return
*/
public static Element getNode(Element node,String nodeString,Element nodeFound){
if (nodeFound!=null){
return nodeFound;
}else{
// 当前节点下面子节点迭代器
Iterator<Element> it = node.elementIterator();
while((it.hasNext())&&(nodeFound==null)){
Element e= it.next();
if (e.getName().equals(nodeString)){
nodeFound=e;
}else{
nodeFound=getNode(e,nodeString,nodeFound);
}
}
}
return nodeFound;
}
}
|