• JAVA之DOM和SAX解析器


    xml的解析器:
    DOM解析:Document Object Module 文档对象模型
    SAX解析:Simple API for XML 用于对 XML 进行语法分析的事件驱动的简单 API


    JAXP:Java API for XML Processing,
    用于XML文档处理的使用Java语言编写的编程接口。
    不提供语法分析功能,却提供到达这些语法分析器和结果的方式。
    (标准和规范)

    DOM解析:文档对象模型
    一次性读入内存,形成树状结构
    可以反复频繁访问
    不适合操作大的xml文件


    DOM解析的API:
    Node :文档树中的单个节点
    Document:表示整个 HTML 或 XML 文档
    Element:表示 HTML 或 XML 文档中的一个元素
    NodeList:文档树中的一组节点

    得到Document对象:
    1.创建解析器工厂
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    2.通过解析器工厂创建解析器对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    3.解析xml文件,得到Document对象
    Document document=builder.parse(String path);

    NodeList类常用方法:
    int getLength():列表中的节点数。
    Node item(int index): 返回集合中的第 index 个项。

    Document类生成xml文档常用方法:
    createElement()创建DOM节点
    createAttribute()创建节点属性
    setTextContent() 设置节点文本
    appendChild()添加子节点


    DOM解析:
    优点:常驻内存,对于提高应用程序频繁访问,提高效率
    缺点:当xml文件非常复杂的时候,占用太多的内存空间

    -----------------------------------------------------------------
    SAX解析:事件驱动,顺序解析


    步骤:
    1.创建解析器工厂
    SAXParserFactory factory=SAXParserFactory.newInstance();
    2.通过解析器工厂创建解析器对象
    SAXParser parser=factory.newSAXParser();
    3.解析xml文件 需要传入xml文件对象,和继承DefaultHandler类的子类 重写了读取xml信息的方法

    parser.parse(String path,new MyDefaultHandler());

    DefaultHandler的方法 这些方法都没有实现 需要继承之后 按照自己的需求实现:
    startDocument() 文档起始位置
    startElement() 元素起始位置:通过该方法的 qName参数得到元素名
    characters() 文本元素:根据参数ch字符数组和int start,int length 索引和长度构造一个string 对象 就是元素的文本内容
    endElement() 元素结束位置
    endDocument() 文档结束位置

  • 相关阅读:
    NHibernate 做个小项目来试一下吧 四 (我们继续)
    NHibernate 做个小项目来试一下吧 三
    NHibernate 做个小项目来试一下吧(数据分页) 七
    用SWFUpload插件进行多文件上传(上传页获得自定义后的文件名)
    SQL:找出我(uid=2)所有的好友信息,和这些好友发布的最新的一篇文章
    介绍生成PHP网站页面静态化的方法
    smarty if 操作符
    php 做注册邮件发送成功
    200多个js技巧代码
    生成列表页分页的HTML静态页
  • 原文地址:https://www.cnblogs.com/java888/p/10430813.html
Copyright © 2020-2023  润新知