zoukankan      html  css  js  c++  java
  • 深入解读XML解析

    一、XML是什么?有什么用?

     

    XML是指可扩展标记语言(eXtensible MarkupLanguage),它是一种标记语言。它被设计的宗旨是描述数据(XML),而非显示数据(HTML)。

    目前遵循的是W3C组织于2000年发布的XML1.0规范

    二、XML的基本语法

    1、文档声明:很重要

    在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。

    作用:告知解析器,我是一个XML文档。

    最简单的声明语法:

    <?xml version="1.0"?>     中间不要加空格,后面加?号

    当我们写好的一个xml文件写入内存的时候会转换为二进制保存,这个时候会查码表,记事本保存的时候是gbk,而保存的时候默认查码表时用的是utf-8,

    这个时候我们就可以用encoding属性:默认是UTF-8    <?xml version="1.0" encoding="GBK"?>,这样就可以解决乱码等问题。

    standlone属性:该xml文件是否独立存在。

    2、元素(标签)

    XML语法非常严格。不能够省略结束标签。

    一个XML文档必须有且仅有一个根标签

    XML中不会忽略主体内容中出现的空格和换行

    元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点,但必须遵守下面的一些规范:

    l  严格区分大小写;<P> <p>

    l  只能以字母或下划线开头;abc _abc

    l  不能以xml(或XML、Xml等)开头----W3C保留日后使用;

    l  名称字符之间不能有空格或制表符;ab

    l  名称字符之间不能使用冒号; (有特殊用途)   

    3、元素的属性

    属性值一定要用引号(单引号或双引号)引起来

     元素中属性不允许重复

    4、注释

    XML中的注释语法为:<!--这是注释-->

    XML声明之前不能有注释       不允许第一行写注释(不同于java)

    5、CDATA区

    Character Data:字符数据。

    语法:

    <![CDATA[

    内容

    ]]>

    作用:

    被CDATA包围的内容,都是普通的文本字符串。

    6、特殊字符

    特殊字符       替代符号

    &                    &amp

    <                  &lt

    >                  &gt

    "                    &quot

    '                     &apos

    三、XML的约束

    XML可以自定义。如果作为配置文件。

    格式良好的XML文档:遵循XML语法的。

    有效的XML文档:遵守约束的XML文档。

    有效的XML文档必定是格式良好的,但良好的不一定是有效的。

    1、DTD约束:(能看懂DTD即可)

    a、DTD(Document Type Definition):文档类型定义

    作用:约束XML的书写规范

    注意:dtd可以写在单独的文件中,扩展名是dtd,且必须使用UTF-8编码进行保存。

    b、XML文档中如何导入DTD约束文档(XML外部)

    l  dtd文档在本地:

    <!DOCTYPE 根元素 SYSTEM "dtd文件的路径">

    l  dtd文档在网络上:

    <!DOCTYPE 根元素 PUBLIC "dtd名称" "DTD文档的URL链接地址">

    四、利用Java代码解析XML文档

    1、解析方式

    l  DOM:Document Object Model,文档对象模型。这种方式是W3C推荐的处理XML的一种标准方式。

    缺点:必须读取整个XML文档,才能构建DOM模型,如果XML文档过大,造成资源的浪费。

    优点:适合对XML中的数据进行操作(CRUD)。

    l  SAX:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。

    2、解析工具

    JAXP:

    DOM或SAX方式进行解析XML。API在JDK之中。

    Dom4J:(推荐)

    是开源组织推出的解析开发包。(牛,大家都在用,包括SUN公司的一些技术的实现都在用)

    五、JAXP进行DOM方式解析XML基本练习

    1、JAXP简介:

    开发包:(JDK中)

    DOM:W3C。org.w3c.dom.*   DOM规范。(接口/抽象类)

    SAX:开源组织。org.xml.sax.*  SAX规范。(接口/抽象类)

    JAXP:javax.xml.* 

    sax解析原理

    在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构架代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。

    SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。


    SAX采用事件处理的方式解析XML文件,利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器: 解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。 解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。 事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理

    基本解析操作

        //1解析器
        SAXParser parse = SAXParserFactory.newInstance().newSAXParser();
        //2获取xml读取器
        XMLReader reader = parse.getXMLReader();
        //3注册内容处理器
        reader.setContentHandler(new ContentHandler1());
        //4读取xml文档
        reader.parse("src/book.xml");
  • 相关阅读:
    debian下安装oracle10G
    【海洋女神原创】如何为工程添加一个Installshield不支持的语言艾泽拉斯之海洋女神翻译
    无论程序是否安装,都使setup.exe直接进入安装状态,不出现反安装;以及由此延伸出的同一安装程序允许在同一机器上安装多套软件的探讨
    个人收藏的一些资料(五)Installshield定制行为
    Installshield无人值守安装sqlserver脚本
    个人收藏的一些资料(二)MSI更新和补丁包的制作
    个人收藏的一些资料(三)MSI打包白皮书
    Installshield建立IE快捷方式的方法
    个人收藏的一些资料(一)Installshield制作友好的更新
    MyEclipse的自动提示太让人抓狂了,有没有什么办法改善?
  • 原文地址:https://www.cnblogs.com/SFHa/p/8867426.html
Copyright © 2011-2022 走看看