javaWeb(一)XML简介、Sax解析xml、Xpath解析xml

1、XML简介:

eXtendsible Markup Language 可扩展的标记语言

  1. 可以用来保存数据
  2. 可以用来做配置文件
  3. 数据传输载体

2、Sax解析xml:

所有的解析API都在dom4j这个包中
相关API文档dom4j API 用于解析XML的java库

解析XML有很多方法,其中最主要的有两种:

  1. DOM
  2. SAX

具体介绍和区别如下:
在这里插入图片描述

解析的步骤:

  1. 加载jar包

首先是加载解析XML的库:dom4j-1.6.1.jar

然后和之前使用JDBC的jar包一样,在工程下创建lib文件夹,然后build path,如下图所示:

在这里插入图片描述

  1. 创建SaxReader对象
  2. 指定解析的xml
  3. 获取根元素
  4. 获取子元素(可以链式获取,也可以全部获取放入集合中再遍历)

代码如下:

XmlResolve:

  • 获取xml文件中第一个student里面name值
  • 两个name值我都要
package cn.nupt;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class XmlResolve {

	public static void main(String[] args) throws DocumentException {
		//2. 创建SaxReader对象
		SAXReader sax = new SAXReader();
		//3. 指定解析的xml
		Document document = sax.read(new File("src/XML/demo.xml"));
		//4. 获取根元素
		Element root = document.getRootElement();

		// 第一种方法,利用链式方法

		String value = root.element("student").element("name").getStringValue();

		System.out.println(value);
		
		System.out.println("------------------------------");

		// 第二种方法,利用返回一个Element集合,然后遍历

		List<Element> list = root.elements();

		for (Element ele : list) {
			System.out.println(ele.element("name").getStringValue());
		}

	}

}

输出:

PizAn
------------------------------
PizAn
吴彦祖

demo.xml

<?xml version="1.0" encoding="UTF-8"?>
<class>

	<student>
		<name>PizAn</name>
		<age>23</age>
		<home>江苏</home>
	</student>

	<student>
		<name>吴彦祖</name>
		<age>24</age>
		<home>香港</home>
	</student>

</class>

3、Xpath解析xml:

dom4j里面支持Xpath的写法,Xpath是xml的路径语言,支持我们快速定位到具体的某个元素(有点像用正则表达式快速匹配一些字符,这里的字符就是元素)

相关参考文档XPathTutorial

步骤:

  1. 老规矩,先导包:jaxen-1.1-beta-6.jar
  2. 和前面的Sax一样,先获取根节点
  3. (1)获取一个元素(2)获取全部元素放在集合里面然后遍历
    获取的都是Node,需要向下转型成Element或者指定泛型

代码如下:

package cn.nupt;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class XmlResolve {

	public static void main(String[] args) throws DocumentException {
		SAXReader sax = new SAXReader();
		Document document = sax.read(new File("src/XML/demo.xml"));

		// 2. 和前面的Sax一样,先获取根节点
		Element root = document.getRootElement();
		// 3. 只拿取一个元素
		Element ele = (Element) root.selectSingleNode("//name");

		System.out.println(ele.getText());

		// 3. 获取全部元素放在集合里面然后遍历
		System.out.println("--------------------------");
		List<Element> list = root.selectNodes("//name");
		for (Element element : list) {
			System.out.println(element.getText());
		}

	}

}

输出:

PizAn
--------------------------
PizAn
吴彦祖

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值