XML解析

1.概述

我们在实际应用中,通常使用xml存储数据,或作为配置文件。所以需要获取到xml文件中的内容,转化为我们需要的内容。

 

xml是可扩展的标记语言,不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析。

 

Java对dom技术解析标记型文档也做了实现:

早期sun公司就制定了dom 技术,这个技术在解析xml的时候需要把整个xml文件加载到内存中,可以根据getElementsById、getElementsByName 、getElementsByTagName 等方法解析,但是效率低。

 

sun公司在JDK6版本对 dom解析技术进行了升级 :SAX解析

 

SAX解析技术:读取xml,理解为一行一行的去读取,读取下一行的时候,会把之前读取的内容进行释放。

 

sun公司的解析统称 JAXP。

 

第三方的解析:

pull、xStream、jDOM、dom4j

 

dom4j:dom for java

本教程介绍dom4j技术


dom4j:是一个开源的api,属于第三方公司开发的产品(dom4j的api不在jdk中。)

 

如果要使用dom4j 需要去dom4j官网下载dom4j相关资料,去dom4j官网下载jar包http://dom4j.sourceforge.net/


2.Hello World


xml示例



工程引入jar包dom4j-1.6.1.jar


 获取所有标签的文本值

<span style="font-size:14px;">public class Demo {

	// 解析xml文档 获取所有文本内容
	@Test
	public void parse() throws DocumentException {

		// 获取Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("./schema/books.xml");// xml文档路径
		
		// 获取根标签
		Element root = document.getRootElement();
		// 获取根标签的所有子标签
		List<Element> books = root.elements();

		// 遍历
		for (Element book : books) {
			// 获取每个子标签book的子标签
			List<Element> bookChildren = book.elements();
			// 遍历
			for (Element child : bookChildren) {
				// 获取标签文本
				String text = child.getText();
				System.out.println(text);
			}
		}

	}</span>

输出内容:

葵花宝典
金庸
998
哈哈哈
呵呵
888

获取指定标签的文本值

<span style="font-size:14px;">// 获取指定标签的文本值
	@Test
	public void getText() throws DocumentException {
		// 获取Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("./schema/books.xml");// xml文档路径

		// 获取根标签
		Element root = document.getRootElement();
		// 获取根标签的所有子标签
		List<Element> books = root.elements();

		// 遍历books
		for (Element book : books) {
			// 获取id属性为11的book标签
			if ("1".equals(book.attributeValue("id"))) {// id属性为11
				// 获取该标签的所有子标签
				List<Element> bookChildren = book.elements();
				// 遍历
				for (Element child : bookChildren) {
					if ("name".equals(child.getName())) {// 标签名为name
						System.out.println(child.getText());
					}
				}
			}
		}
	}</span>

输出内容:

葵花宝典



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值