A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
	}
}


3 个回复

倒序浏览
ヾ(◍°∇°◍)ノ゙
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马