• xml&xml约束dtd&xml解析器


    (1)xml语法及应用,完W3School讲的比较全面清晰了,网址:http://www.w3school.com.cn/xml/

    (2)dtd为约束xml合法构建模块,网址:http://www.w3school.com.cn/dtd/

    (3)xml解析技术有两种:DOM模式和SAX模式

      这两个方法各有优缺点,在网上可以查到对比:

      在解析xml时(如浏览器解析html标签),主要存在两种方式:SAX模式和DOM模式

      SAX (Simple API for XML) 和 DOM (Document Object Model) 是当前两个主要的XML API,几乎所有商用的xml 解析器都同时实现了这两个接口。因此如果你的程序使用了SAX或者DOM APIs,那么你的程序对xml解析器是透明。

    SAX DOM
    依序读入文件并产生相对应事件,可以处理任何大小的XML文件。 在内存中建立文件树,不适于处理大型的XML文件。
    只能对文件按顺序剖析一遍,不支持对文件的随意存取 可以随意存取文件树的任何部分,没有次数限制
    只能读取XML文件内容,而不能修改 可以随意修改文件树,从而修改了XML文件
    开发上比较复杂,需要自己来制作事件处理器 易于理解,易于开发
    对工作人员更灵活,可以用SAX建立自己的XML对象模型 已经在DOM基础之上建立了文件树
     
      基于事件的处理的优点和缺点

           这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,
         因此不需 要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时
         停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。
         另一方面,由于应用程序没有以任何方式存储数据,使用 SAX 来更改数据或在数据流中往后移是不可能的。
     
      基于树的处理的优点和缺点

        DOM 
        以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。
           它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
        另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵 DOM 树可能是一个缓慢的过程。
     
    (4)xml解析器
     
      基于SAX和DOM两者的:
    • JAXP(Java API for XML Processing)包含javax.xml.parsers和transform;其中parsers包中包括4个主要类SAXParser和SAXParserFactory类创建SAX XMLReader接口例程,DocumentBuilder和DocumentBuilderFactory类创建DOM Document接口例程。
    • DOM4J:一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
    • XERCES:Xerces是由Apache组织所推动的一项XML文档解析开源项目,支持文档对象模型(DOM)和XML简单应用编程接口(SAX)。对于DOM解析,有DOMParser和IDOMParser;对于SAX解析,有SAXParser。它目前有多种语言版本包括JAVA、C++、PERL、COM等。
    仅基于DOM的:
    • JDOM:Jason Hunter和Brett McLaughlin开发的项目,JDOM的设计目标就是在读和创建XML时简化DOM,取代DOM。
    • 微软的MSXML解析器:微软的XML解析器是存在于IE 5.0或更高版本中的COM组件。一旦你安装了IE,就可使用脚本来利用解析器了。微软给我们提供XML语法解析器,一个叫做MSXML.DLL的动态链接库(C语言)
      
     
  • 相关阅读:
    解决弹出的窗口window.open会被浏览器阻止的问题(自定义open方法)
    js call
    说说JSON和JSONP,也许你会豁然开朗
    按需加载/懒加载
    Sublime Text2 中Emmet(之前叫Zencoding)插件安装以及使用
    求数组中的最小值以及最小值的序列号
    软件工程概论作业03--将随机产生的表达式导入数据库
    软件工程作业01--四则运算1
    梦断代码阅读笔记
    学习进度条--第二周
  • 原文地址:https://www.cnblogs.com/daisy-hust/p/4973939.html
Copyright © 2020-2023  润新知