XML总结——XML解析

本文介绍了XML解析的三种主要方式:DOM解析、SAX解析和Dom4j解析。DOM解析将XML文件转换为内存中的树形结构,适合小文件但对大文件内存消耗大。SAX解析则在读取时即时处理,内存效率高但无法修改节点。Dom4j是一个灵活且功能强大的XML API,提供了比JDOM更好的易用性。文章包含每种解析方式的基本原理、优缺点以及编程步骤,并提供了代码示例。
摘要由CSDN通过智能技术生成


XML解析

一、XML解析

  • XML解析方式分为两种:dom和sax
    • dom:(Document Object Model,即文档对象模型),处理XML的一种方式
    • sax:(Simple API for XML)不是官方标准,但它是XML社区事实上的标准几乎所有的XML解析器都支持它。
  • XML解析开发包
    • Jaxp、Jdom、dom4j

1、DOM解析

DOM模型

DOM解析器在解析XMl文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。

优点:把Xml文件在内存中构造树形结构,可以遍历和修改节点

缺点:如果文件比较大,内存有压力,解析的实际时间比较长

DOM编程步骤

  • 调用DocumentBuilderFactory.newInstance()方法得到创建DOM解析器的工厂。

  • 调用工厂对象的newDocumentBuilder方法得到DOM解析器对象。

  • 调用DOM解析器对象的parse()方法解析XML文档,得到代表整个文档的Document对象,就可以利用DOM特性对整个XMl文档进行操作了。

代码:
MyXml.xml

<?xml version="1.0" encoding="UTF-8"?>
<employees>
	<employee id="0">
		<name>Alexia</name>
		<age>23</age>
		<sex>Female</sex>
		<weight>150</weight>
		<weight><a>160</a></weight>
	</employee>
	
	<employee id="1">
		<name height="178">Edward</name>
		<age>24</age>
		<sex>Male</sex>
	</employee>
	
	<employee id="2">
		<name>Tom</name>
		<age>20</age>
		<sex>Female</sex>
	</employee>
	
	<employee id="3">
		<name>Admin</name>
		<age>21</age>
		<sex>Male</sex>
	</employee>
</employees>

DOMXml.java

import javax.xml.parsers.*;

import org.w3c.dom.*;

/* 
 * Dom解析XML
 * 
 * @author USE
 */
public class DOMXml {
   
	public static void main(String[] args) throws Exception {
   
		//获得创建DOM解析器的工厂
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		//设置由此工厂生成的解析器,忽略注释
		dbf.setIgnoringComments(true);
		//忽略空格
		dbf.setIgnoringElementContentWhitespace(true);
		//调用工厂对象的方法获取DOM解析器对象
		DocumentBuilder builder = dbf.newDocumentBuilder();
		//调用DOM解析器对象解析XML文档,获取文档Document
		Document doc = (Document) builder.parse("src/com/MyXml.xml");
		//获得根节点
		Element root = doc.getDocumentElement();
		System.out.println(root.getTagName());
		//根据标签名获得结点
		NodeList nodeList = doc.getElementsByTagName("employee");
		System.out.println("employess节点的个数:"+nodeList.getLength());
		//遍历nodeList
		for(int i=0;i<nodeList.getLength();i++){
   
			Element element = (Element)nodeList.item(i);
			//获得id属性值
			String attribute = element.getAttribute("id");
			System.out.println("id:" + attribute);
			//获取第一个employee
			if(i==0){
   
				//获得元素下面的name文本
				System.out.println(
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值