首页 后端开发 XML/RSS教程 XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

Feb 16, 2017 pm 03:16 PM

Demo1类:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

import java.io.File;

import java.util.List;

 

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

 

/**

 * 使用sax解析把 xml文档封装成对象

 * @author APPle

 *

 */

public class Demo3 {

 

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

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

        MyDefaultHandler3 handler = new MyDefaultHandler3();

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

        List<Contact> list = handler.getList();

        for (Contact contact : list) {

            System.out.println(contact);

        }

    }

}

登录后复制


MyDefaultHandler3类:


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

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

import java.util.ArrayList;

import java.util.List;

 

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

/**

 * SAX处理程序

 * @author APPle

 *

 */

public class MyDefaultHandler3 extends DefaultHandler {

    //存储所有联系人对象

    private List<Contact> list = new ArrayList<Contact>();

     

    public List<Contact> getList(){

        return list;

    }

    //保存一个联系人信息

    private Contact contact;

    /**

     * 思路:

     *  1)创建Contact对象

     *  2)把每个contact标签内容存入到Contact对象

     *  3)把Contact对象放入List中

     */

    //用于临时存储当前读到的标签名

    private String curTag;//用于方法跨度使用变量。

 

    @Override

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

            Attributes attributes) throws SAXException {

        curTag = qName;

        //读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。

        if("contact".equals(qName)){

            contact = new Contact();

             

            //设置id值

            contact.setId(attributes.getValue("id"));//根据指定名字获取id值

        }

    }

     

    @Override

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

            throws SAXException {

        //当前文本内容

        String content = new String(ch,start,length);//String类构造方法获取到当前文本的额内容。

         

        if("name".equals(curTag)){

            contact.setName(content);

        }

         

        if("age".equals(curTag)){

            contact.setAge(content);

        }

         

        if("phone".equals(curTag)){

            contact.setPhone(content);

        }

         

        if("email".equals(curTag)){

            contact.setEmail(content);

        }

         

        if("qq".equals(curTag)){

            contact.setQq(content);

        }

    }

     

    @Override

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

            throws SAXException {

        //结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。

        curTag = null;

        //读到Contact的结束标签把content对象放入List中

        if("contact".equals(qName)){

            list.add(contact);

        }

    }

}

登录后复制


 以上就是XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

使用Gin框架实现XML和JSON数据解析功能 使用Gin框架实现XML和JSON数据解析功能 Jun 22, 2023 pm 03:14 PM

使用Gin框架实现XML和JSON数据解析功能

Java错误:XML解析错误,如何解决和避免 Java错误:XML解析错误,如何解决和避免 Jun 24, 2023 pm 05:46 PM

Java错误:XML解析错误,如何解决和避免

Java开发中如何解决XML解析内存占用过高问题 Java开发中如何解决XML解析内存占用过高问题 Jun 29, 2023 am 09:37 AM

Java开发中如何解决XML解析内存占用过高问题

使用PHP解析XML,获取节点内容的方法 使用PHP解析XML,获取节点内容的方法 Jun 13, 2023 pm 04:31 PM

使用PHP解析XML,获取节点内容的方法

解决Java XML解析异常(XMLParsingException)的解决方案 解决Java XML解析异常(XMLParsingException)的解决方案 Aug 19, 2023 pm 01:43 PM

解决Java XML解析异常(XMLParsingException)的解决方案

PHP8.1更新:增强的XML解析功能 PHP8.1更新:增强的XML解析功能 Jul 07, 2023 am 09:22 AM

PHP8.1更新:增强的XML解析功能

PHP中的XML解析和生成指南 PHP中的XML解析和生成指南 Jun 11, 2023 am 11:01 AM

PHP中的XML解析和生成指南

Java开发如何减少XML解析内存占用问题 Java开发如何减少XML解析内存占用问题 Jun 30, 2023 pm 09:19 PM

Java开发如何减少XML解析内存占用问题

See all articles