XML文档解析包 Dom4j 简单使用

前端之家收集整理的这篇文章主要介绍了XML文档解析包 Dom4j 简单使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、摘要

DOM4J是dom4j.org出品的一个开源XML解析包,是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP


官方下载地址:http://www.dom4j.org/dom4j-1.6.1/

下载完成后的文档结构如下

直接导入dom4j-1.6.1.jar

二、使用

1. 提供的xml文档内容

<RESULT>
	<CODE>1</CODE>
	<REMARK>返回成功</REMARK>
	<PHONES>
		<PHONEINFO id="1">
			<NAME>测试1</NAME>
			<NUMBER>11111111111</NUMBER>
		</PHONEINFO>
		<PHONEINFO id="2">
			<NAME>测试2</NAME>
			<NUMBER>12222222222</NUMBER>
		</PHONEINFO>
	</PHONES>
</RESULT>
存放在android项目根目录/assets文件夹下,文件名:phones.xml

2. 下面将解析代码封装成方法

/**
	 * Dom4j解析xml文件
	 */
	public static void startReadXmlFromFile(Context ctx) {
		Document doc = null;
		List<PhoneInfo> mList = null;
		try {
			// 读取并解析XML文档
			// SAXReader就是一个管道,用一个流的方式,把xml文件读出来
			//
			SAXReader reader = new SAXReader();

			doc = reader.read(ctx.getAssets().open("phones.xml")); // phones.xml表示你要解析的xml文档

			// 1. 获取根节点
			Element root = doc.getRootElement();
			Log.d("tag","根节点:" + root.getName()); // 输出名称

			// 2. 获取根节点下指定的子节点 Phones
			Iterator iter = root.elementIterator("PHONES");
			if (iter.hasNext()) {
				// 3. 实例化集合
				mList = new ArrayList<PhoneInfo>();
				// 4. 指向重复子节点
				Element phonesEle = (Element) iter.next();
				Log.d("tag","节点:" + phonesEle.getName());

				// 5. 遍历节点,获取数据
				for (Iterator iterator = phonesEle.elementIterator("PHONEINFO"); iterator
						.hasNext();) {
					Element phoneEle = (Element) iterator.next();
					// 6. phone属性
					int id = Integer.valueOf(phoneEle.attributeValue("id").toString());
					// 7. 获取phone子节点
					Iterator num = phoneEle.elementIterator("NUMBER");
					Element numEle = (Element) num.next();
					Iterator name = phoneEle.elementIterator("NAME");
					Element nameEle = (Element) name.next();
					// 8. 封装数据 (获取节点数据)
					PhoneInfo info = new PhoneInfo(id,nameEle.getText(),numEle.getText());
					Log.d("tag",info.toString());
					mList.add(info);
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

结果:
02-08 15:32:45.446: D/tag(25376): 根节点:RESULT
02-08 15:32:45.446: D/tag(25376): 节点:PHONES
02-08 15:32:45.446: D/tag(25376): id : 1,name: 测试1,number: 11111111111
02-08 15:32:45.446: D/tag(25376): id : 2,name: 测试2,number: 12222222222


3. 如果要解析xml字符串,只需要将字符串转换为xml即可
// 下面的是通过解析xml字符串的
			doc = DocumentHelper.parseText(xml); // 将字符串转为XML

猜你在找的XML相关文章