首页 > 后端开发 > XML/RSS教程 > XML解析之SAX解析过程代码详解

XML解析之SAX解析过程代码详解

黄舟
发布: 2017-02-16 15:20:00
原创
1456 人浏览过

上一篇谢了解析原理和过程,这里应用代码直观认识这个原理:

新建Demo1类:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import java.io.File;

 

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

 

/**

 * 第一个SAX读取xml文件程序

 * @author APPle

 *

 */

public class Demo1 {

 

     

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

        //1.创建SAXParser对象

        //

        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();

         

        //2.调用parse方法

        /**

         * 参数一: xml文档

         * 参数二: DefaultHandler的子类,默认基类,因此没法new。用子类

         */

        parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());

        //使用指定的 DefaultHandler 将指定文件的内容解析为 XML。这里一定要自定义MyDefaultHandler类,且在里面实现业务逻辑。不理解先死记住这种模式。

    }

 

}

登录后复制


接着给出自定义继承DefaultHandler的MyDefaultHandler



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

/**

 * SAX处理程序(如何解析xml文档)

 * @author APPle

 *

 */

public class MyDefaultHandler extends DefaultHandler {

     

    /**

     * 开始文档时调用

     */

    @Override

    public void startDocument() throws SAXException {

        System.out.println("MyDefaultHandler.startDocument()");

    }

     

    /**

     * 开始标签时调用

     * @param qName: 表示开始标签的标签名

     * @param attributes: 表示开始标签内包含的(属性)【列表】

     */

    @Override

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

            Attributes attributes) throws SAXException {

        System.out.println("MyDefaultHandler.startElement()-->"+qName);

    }

     

    /**

     * 结束标签时调用

     * @param qName: 结束标签的标签名称

     */

    @Override

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

            throws SAXException {

        System.out.println("MyDefaultHandler.endElement()-->"+qName);

    }

     

    /**

     * 读到文本内容的时调用

     * @param ch: 表示当前读完的所有文本内容

     * @param start: 表示当前文本内容的开始位置

     * @param length: 表示当前文本内容的长度

     */

    @Override

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

            throws SAXException {

        //得到当前文本内容

        String content = new String(ch,start,length);

        System.out.println("MyDefaultHandler.characters()-->"+content);

    }

     

    /**

     * 结束文档时调用

     */

    @Override

    public void endDocument() throws SAXException {

        System.out.println("MyDefaultHandler.endDocument()");

    }

     

}

登录后复制

打印输出,更直观认识sax解析过程。下一篇给出应用案例

 以上就是XML解析之SAX解析过程代码详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
如何在 PHP 中解析和处理 HTML/XML?
来自于 1970-01-01 08:00:00
0
0
0
在PHP中如何解析和处理HTML/XML?
来自于 1970-01-01 08:00:00
0
0
0
如何使用 PHP 来解析和处理 HTML/XML?
来自于 1970-01-01 08:00:00
0
0
0
php7 - php 解析SOAP的xml失败
来自于 1970-01-01 08:00:00
0
0
0
解析变量
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板