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





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值