使用 Schema 的 sax 方式操作 xml(一)| 学习笔记

简介: 快速学习使用 Schema 的 sax 方式操作 xml。

开发者学堂课程【XML入门 :使用 Schema 的 sax 方式操作 xml(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

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


使用 Schema 的 sax 方式操作 xml(一)

 

内容介绍

一、sax 方式只做查询操作

二、打印出整个文档

三、获取到所有的 name 元素的值

四、获取第一个 name 元素的值

五、总结

 

一、sax 方式只做查询操作

1、使用 jaxp 的 sax 方式解析 xml

* sax 方式不能实现增删改操作,只能做查询操作

2、打开文档,先创建一个 other 文件,命名为 p1.xml

在里面写几个标签

<person>

<p1>

<name> zhangsan</name>

<age>20</age>

</p1>

<p1>

<name>lisi</name>

<age> 30</age>

</p1>

</person>

3、创建类之前要创建包,命名为 cn.itcast.jaxpsax。

3、在里面写一个类,新建一个 class,命名为 testsax。

main 方法生成有一个快捷键,直接写一个 main,加 alt 加斜线,就会直接出来,先写基本的步骤,首先第一步要的到 saxparser 解析器,但是这个解析器通过工厂才能得到,所以第一个步要创建解析器工厂,第二部创建解析器,执行 parse 方法,接下来写下这三部操作。

package cn. itcast.jaxpsax;

import javax. xml . parsers. SAXParserFactory;

public class TestSax {

public static void main(String[] args)throws Exception {

/*

* 1、创建解析器工厂

* 2、创建解析器

* 3、#执行 parse 方法

* */

/ /创建解析器工厂

SAXParserFactory saxParserFactory = SAXParserFactory. newInstance();

//创建解析器

SAXParser saxParser = saxParserFactory . newSAXParser();

有异常给抛出去

//执行 parse 方法

saxParser.parse("src/p1. xml ,dh);

}

}

4、saxParser.parse("src/p1. xml ,dh);里面传两个参数,第一个是路径,第二个传事件处理器,看一下 defaulthandler 的类,这里面需要自己写一个事件处理器,来继承这个类,继承类自后就重新以下三个方法,

*当解析到开始标签时候,执行 startE1 ement 方法,参数 qlame:返回标签名称

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

*当解析到结束标签时候,执行 endE1 enent 方法,参数 qNane,返回标签名称

需要自己创一个类。

*4、自己创建一个类,继承 defaulthandler

*5、重写类里面的三个方法

5、写一个类,类的位置不能写在//执行 parse 方法的下面,还要往下写。一个里面可以有多个 class 类,但是只能有一个 public,继承这个类。

class MyDefault1 extends DefaultHandler

重写 DefaultHandler 这个方法,这有个快捷键的方法,点击右键,在 source 里面有一个叫 Override/Implement Methods....,点击

image.png

可以看到 DefaultHandler 里面所有方法,就找到用的这三个方法,

characters(char, int, int)

endElement(String, String, String)

startElement(String, String, String, Attributes)

把顺序调整一下

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

//TODO Auto- generated method stub

super. startElement(uri, localName, qName, attributes);

}

@Override

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

throws SAXException {

// TODO Auto- generated method stub

super. characters(ch, start, length);

}

@Override

public void endElement(String uri, String localName, String qName )

Throws SAXException {

//TODO Auto- generated method stub

super . endElement(uri, localName, qName ) ;

}

6、dh 写成 new MyDefault1()) ;

7、当开始条件就用 startElement 这个方法,qname 就返回标签名称,比如写一下开始标签。

System. out. println("start:"+qName) ;

第二个方法里面是它的文本内容,里面传三个参数。

System. out . print1n("text: "+new String(ch, start, length)) ;

最后一个是结束标签。

System. out . println("end: " +qName) ;

完整代码如下:

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

System. out. println("start:"+qName) ;

}

@Override

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

throws SAXException {

System. out . print1n("text: "+new String(ch, start, length)) ;

}

@Override

public void endElement(String uri, String localName, String qName )

Throws SAXException {

System. out . println("end: " +qName) ;

}

执行,看能否将 p 里面的内容打印出来,右键 run as 运行程序。下图是打印出的结果:

image.png

里面会有空格,就是解析的时候会把空格和换行都当作内容进行解析。

相关文章
|
10月前
|
XML 数据库 数据格式
数据库视频第六章 XML查询,FOR XML语句
数据库视频第六章 XML查询,FOR XML语句
|
11月前
|
XML 数据格式
【XML学习 三】XML Schema原理及使用
【XML学习 三】XML Schema原理及使用
86 0
|
XML JavaScript 数据格式
QT Dom方式操作XML
本文提供了读者已知的XML文件语法结构,对xml基础知识不作介绍,仅介绍了QT操作xml的方法之一。
236 0
|
XML 数据格式 开发者
使用 Schema 的 sax 方式操作 xml(二)| 学习笔记
快速学习使用 Schema 的 sax 方式操作 xml。
80 0
使用 Schema 的 sax 方式操作 xml(二)| 学习笔记
|
XML 数据格式 开发者
使用 dom4j 实现查询 xml 操作(二)| 学习笔记
快速学习使用 dom4j 实现查询 xml 操作。
99 0
|
XML 数据格式 开发者
使用 dom4j 实现查询 xml 操作(一)| 学习笔记
快速学习使用 dom4j 实现查询 xml 操作。
127 0
使用 dom4j 实现查询 xml 操作(一)| 学习笔记
|
XML 程序员 数据格式
【XML】学习笔记第四章-schema
【XML】学习笔记第四章-schema
101 0
【XML】学习笔记第四章-schema
|
XML JavaScript 测试技术
Dom4j工具--XML的DOM解析(上)--读操作
前言: 什么是DOM解析 DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。
2277 0
|
XML C# 数据格式

相关课程

更多