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");
  • 相关阅读:
    黑马程序员——用函数实现模块化程序设计(一)
    RN个人笔记SectionListView
    小程序实现APP底部(TabBar)页面控制效果
    #import "项目名-Swift.h"的介绍
    OC & Swift中UITextFiled、UITextView限制输入字数
    Xcode8使用CoreData如何生成OC和Swift版的SubClass
    Swift之“闭包”的应用
    Swift中两种桥接头文件创建方式
    swift头部无线轮播视图
    swift中collectionView的简单用法
  • 原文地址:https://www.cnblogs.com/SFHa/p/8867426.html
Copyright © 2011-2022 走看看