sax 解析的过程| 学习笔记

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习 sax 解析的过程。

开发者学堂课程【XML入门 :sax 解析的过程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/37/detail/859


sax 解析的过程

 

内容介绍

一、sax 解析的原理

二、sax 解析

 

一、sax 解析的原理

解析 xml 的两种技术/方式

1.dam:

根据 xml 的层级结构在内存中分配一个树形结构

把 xml 中标签,属性,文本封装成对象

2.sax:

写一个事件驱动,边读边解析

 

二、sax 解析

1.sax 方式

找到 Java_API 文档 ,jmp 方式在 Javax.xml.parsers 包下。所以要找到 Javax.xml.parsers

点击 Javax.xml.parsers

image.png

首先上面两个类是 dam 方式,上面两类是 sax 方式

sax 方式有两类:SAXParser、SAXParserFactory

点击 SAXParser,出现下图

SAXParser 是一个抽象类

此类的实例可以从 SAXParserFactory.newSAXParser() 方法获得(图中可找到)

image.png

点击 SAXParserFactory,出现下图

向下滑,可以找到得到工厂实例

image.png

SAXParserFactory 也是抽象类

实例 newInstance() 方法得到

2.SAXParser 解析

首先点击 SAXParser,找到解析方法

image.png

(1)parse(File f, DefaultHandler dh)

有两个参数:xml 的路径、事件处理器

点击 parse(File f, DefaultHandler dh) 中的 DefaultHandler

DefaultHandler 是一个默认的 API 处理器,观察 DefaultHandler 里的方法(只需要记住其中三种)

①startElement(开始元素、开始标签)

startElement(String uri, String localName, String qName, Attributes attributes)

接收元素开始的通知。

② endDocument(结束)

endElement(String uri, String localName, String qName)

接收元素结束的通知。

③ characters

characters(char [] ch, int start, int length)

接收元素中字符数据的通知。

3.画图分析 max 执行过程

(1)有一个 xml 文件

<?xml version=”1.0”?>

<root>

<head>

<title>exemple</title>

</head>

<body>

<p>content1</p>

<p>content2</p>

</body>

<foot>

<author name=”lisi”/>

</foot>

</root>

(2)执行 parse 方法,传递两个参数

一个是 xml 路径

一个是事件处理器

**当把事件处理器传递进来,相当于在方法里面绑定了一个事件

(3)事件处理执行:会用到三个方法

startElement(String uri, String localName, String qName, Attributes attributes)

characters(char [] ch, int start, int length)

endElement(String uri, String localName, String qName)

(4)在里面执行会自动执行事件

在 xml 文件中,<root> 是开始标签,</root> 是结束标签。

①解析的时候,当执行到<root>的时候,就会自动调用 startElement(String uri, String localName, String qName, Attributes attributes)方法,当自动调用方法之后,就可以通过qName参数把标签名称返回;当执行到<head>的时候,还是会自动调用 startElement(String uri, String localName, String qName, Attributes attributes)方法;当执行到<title>的时候,还是会自动调用 startElement(String uri, String localName, String qName, Attributes attributes)方法。只要是开始标签都是执行 startElement(String uri, String localName, String qName, Attributes attributes)方法。

②xml 文件中,exemple 是一个文本,当执行到文本的时候,就会自动调用characters(char [] ch, int start, int length)方法。文本方法有三个参数,三个参数是 string 的构造方法,它们是为了返回文本内容。

③当执行到/开头(</title>),就自动调用endElement(String uri, String localName, String qName)方法,qName 参数:返回标签名称;当执行到</head>,还是会自动调用 endElement(String uri, String localName, String qName)方法;当执行到最后一个</root>,还是自动调用 endElement(String uri, String localName, String qName)方法。

(5)注意:

①当解析到开始标签时候,执行 startElement 方法,参数 qName:返回标签名称

②当解析到文本内容时候,执行 characters 方法,通过 string 的构造方法返回内容

③当解析到结束标签时候,执行 endElement 方法,参数 qName:返回标签名称

image.png

相关文章
|
4月前
|
XML JavaScript Java
【JAVA XML 探秘】DOM、SAX、StAX:揭秘 Java 中 XML 解析技术的终极指南!
【8月更文挑战第25天】本文详细探讨了Java中三种主流的XML解析技术:DOM、SAX与StAX。DOM将XML文档转换为树状结构,便于全方位访问和修改;SAX采取事件驱动模式,适用于大型文件的顺序处理;StAX则兼具DOM和SAX的优点,支持流式处理和随机访问。文中提供了每种技术的示例代码,帮助读者理解如何在实际项目中应用这些解析方法。
218 1
|
4月前
|
XML JavaScript API
DOM 和 SAX 解析器之间的区别
【8月更文挑战第22天】
63 0
|
4月前
|
XML JavaScript Java
Java 中 DOM 和 SAX 解析器之间的区别
【8月更文挑战第22天】
37 0
|
7月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
187 4
|
7月前
|
XML JavaScript Java
Java一分钟之-XML解析:DOM, SAX, StAX
Java中的XML解析包括DOM、SAX和StAX三种方法。DOM将XML加载成内存中的树形结构,适合小文件和需要随意访问的情况,但消耗资源大。SAX是事件驱动的,逐行读取,内存效率高,适用于大型文件,但编程复杂。StAX同样是事件驱动,但允许程序员控制解析流程,低内存占用且更灵活。每种方法都有其特定的易错点和避免策略,选择哪种取决于实际需求。
148 0
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
60 0
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
60 0
|
7月前
|
存储 网络协议 Linux
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
198 0
|
Go 自然语言处理 编译器
Go 学习笔记-Go 词法解析
Go 学习笔记-Go 词法解析
88 0
Go 学习笔记-Go 词法解析
|
域名解析 缓存 网络协议
前端学习笔记202307学习笔记第五十七天-模拟面试笔记http-DNs解析ip地址
前端学习笔记202307学习笔记第五十七天-模拟面试笔记http-DNs解析ip地址
113 1

推荐镜像

更多