• 详解xml


    xml

    xml简介

    XML是一种可扩展标记语言 (Extensible Markup Language, XML)。是一种可扩展的标记语言,XML重在数据交换,用于不同平台或者应用程序之间交换数据,存储数据。

    版本:XML1.0版本(使用)      XML1.1版本(不向下兼容)

    1:XML是纯文本标记

    XML文件是纯文本的形式,正是由于这种简单的格式,才让所有能处理纯文本的程序都能处理XML文件。这样对于数据交换和传输时至关重要的,也提高了它的兼容性和与平台无关性。

    2:XML可以随意的定义自己的标签

    你可以以任意文字定义标签,只要有开始符号和结束符号,只要符合XML的树形结构就可以,甚至可以使用中文。

    3:与HTML的区别

    XML重在存储数据,html重在显示数据。它们都是标记语言,但是html的标记是死的。xml的标记是活的。   如:新浪天气预报接口

    4:XML是没有行为的

    这句话的意思就是XML只能放在文件里面等着别人去读取,写入。自己本身没有执行的能力。

    5.作为框架的配置文件(Struts2 Spring Hibernate)

    xml语法

    文档声明(重点)

    * 文档声明:声明当前的这个文件就是一个XML文件。必须要出现的。
        * 写法:   <?xml version="1.0" ?>
        * 需要出现在xml文档中的第一行第一列的位置。
        * 属性:
            * version="1.0"         XML文件的版本
            * encoding="UTF-8"      代表XML打开文件时所采用编码
            * standalone="yes/no"(可写也可以不写)          XML文件是否独立的,如果不是独立的,就可以引入外部文件。
    * 产生乱码(重点)
        * 产生乱码:在保存文件时,和打开文件时所采用的编码不一致。
        * 解决办法:只需要保存文件时和打开文件所采用编码一致就ok
        * 注意:MyEclipse不会有乱码的问题。
    

    定义元素

    * 必须有开始标签结束标签。每个节点开始结束必须都对应,缺一不可。xml是一个树结构,只能包含一个根节点。
        * 包含标签主体内容  <abc>内容</abc>
        * 不包含标签主体       <abc/>
    * 标签必须要合理的嵌套
    与HTML的注释是相同   <!-- 也是XML的注释 -->
    注释也不可以嵌套。

    * XML的属性命名规范与元素命名规范。 * 元素定义规范 * 区分大小写 <P><p> 代表不同的标签 * 不能以数字和中划线开头 * 不能以XML(Xml XML)开头 * 不能包含空格和冒号

    定义属性

    * 自定义的属性    <abc xyz="" >
    * 元素上不能有相同名称的属性 错误的:<abc xyz="" xyz="" >
    * XML的属性值必须使用引号引起来(单引号或者双引号)
    

    转义字符

    * <     &lt;
    * >     &gt;
    * &     &amp;
    * "     &quot;
    * '     &apos;
    

    CDATA区

    * 作用:使用CDATA区中间的内容解析成文本内容(字符串)。
    * 语法:   <![CDATA[ 内容 ]]>
    

    总结XML的语法

    * XML必须有开始和结束标签。
    * XML区分大小写
    * XML必须正确的嵌套
    * XML只能有一个根节点,必须要有的。
    * XML的属性的值需要使用引号(双引号或者单引号)
    * 转义字符需要进行转义,或者使用CDATA区括起来。

    
    

    XML的约束

    * 格式良好的XML:遵循XML的语法结构。
    * 有效的XML:符合XML的约束的XML文档。 

    两种方式 

    DTD约束 schema约束

    一.DTD约束

    DTD约束开发的步骤

    * 1:先编写一个XML的文档(被约束)。
    * 2:编写DTD的约束文档(约束)。
    * 3:创建一个DTD文档。
        * 3.1 定义元素  语法:<!ELEMENT 元素名称 元素类型 >    XML文档中可以出现的元素
        * 3.2 判断哪些是复杂的元素,哪些是简单元素
        * 3.3 如果是简单元素(只包含文本内容)  元素类型写法:(#PCDATA)
        * 3.4 如果是复杂元素(下边包含子节点)  元素类型写法:(子节点1,子节点2...)
    

    DTD与XML结合一起

    在XML的文件中引入DTD的约束文件。

    * 直接写在XML文件的上面
        * <!DOCTYPE 根节点 [ DTD文件的内容 ] >
    * 定义外部的DTD文件,引入外部的本地的DTD文件
        * <!DOCTYPE 根节点 SYSTEM "DTD文件的地址">
    * 引入外部的DTD文件,引入的网络上的DTD文件
        * <!DOCTYPE 根节点 PUBLIC "DTD文件的名称" "DTD文件的地址">
    

    DTD的语法

    元素定义

    * 写法:<!ELEMENT 元素名称 元素类型>
    * 元素类型:
        * (#PCDATA)                 可解析的字符数据(字符串)
        * EMPTY                     空(没有标签主体)
        * ANY                       任意类型
        * (子节点1,子节点2...)        当前的元素是复杂的元素,下面包含子节点
                 * 子节点之间关系
                      * 子节点与子节点出现顺序的关系
                           * ,     :代表子节点按着顺序出现
                           * |     :子节点出现只能出现一个
                           * 子节点出现的数量的关系
                           * +     :子节点可以出现1次或多次
                           * *     :子节点可以出现0次或多次(任意次)
                           * ?     :子节点可以出现0次或1次
    

    属性定义

    * 写法:
        <!ATTLIST 元素名称 
            属性名称 属性类型 属性约束 
            属性名称 属性类型 属性约束
        >
           * 属性类型
             * CDATA     字符数据(字符串)
             * 枚举:没有关键字,写法(值1|值2|值3),只能从枚举中选择其中一个值
             * ID:代表是属性是唯一的,值就不能相同了。值也不能是数字
    
           * 属性约束
            * #REQUIRED     属性是必须要出现的
            * #IMPLIED      属性的出现是可选的
            * #FIXED        固定值 -- #FIXED "固定值"
            * 默认值           提供默认值   ""
    

    实体定义(了解)

    * 写法:   <!ENTITY 别名 "值">        定义了一个实体
    * 作用:需要在XML的文件中需要引入实体,就会在XML文档中显示别名所对应的值
        * 引入的语法:&别名;

    二.schema约束

    * schema约束为了DTD的局限性。
    * schema约束和DTD的区别(面试题)
        * XML schema约束符号XML的语法规则
        * DOM或者SAX解析的方式很容易解析schema文档
        * schema约束对名称空间支持的非常好的
        * schema约束文档比DTD支持更多的数据类型,支持自定义数据类型。
    

    schema约束文档快速入门

    1:先创建schema的约束文档
     * 先引入W3C的名称空间,在<schema>根节点上,使用xmlns="W3C的名称空间"
        * xmlns  xml namespace
        * xmlns="http://www.w3.org/2001/XMLSchema"
    2 定义元素,想约束XML的元素
        * <element name="元素名称" >
    3 判断是否是复杂还是简单
        * 如果是简单元素   使用type的属性设置元素的数据类型
        * 如果是复杂元素
            * 声明我是复杂元素 <complexType>
            * 声明子节点出现的关系    <sequence>
    4 给自己定义的schema约束起名字(名称空间的空间)
        * targetNamespace="名字需要唯一的" 一般情况下使用域名。
    5 elementFormDefault:决定xml文件里面的书写格式
        * unqualified   :质量不好的
        * qualified     :质量好的(记住)
    
    二:在XML的文档中引入schema的约束文档
    * 目的:引入自己定义的schema约束文档
    * 需要先引入W3C的名称空间:执行当前的XML文档是一个实例文档。
        * xmlns="http://www.w3.org/2001/XMLSchema-instance" 一个实例文档
        * xmlns="http://www.w3.org/2001/XMLSchema"          一个约束文档
    * 引入自己定义的schema约束
        * xmlns="http://www.itcast.cn/hm14"
    * 遇到了问题:一个元素标签上,有相同名称的属性了。
        * 解决问题:起别名(前缀名)。    
        * 元素的标签出现的概率小的名称空间上起别名就ok了。
    * 引入自己定义的schema文件的地址
        * xsi:schemaLocation="schema约束文档的名称 文档的地址"
    

    名称空间的概念

    * 名称空间:自己定义schema文档,需要使用名称空间起名字。    
    * 在XML文档中引入了名称空间,因为XML文档可以引入多个名称空间,只有一个默认的名称空间。
    * 理解相当java中包的结构。
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 数据文件 引用多个Schema -->
    <company xmlns = "http://www.example.org/company"
        xmlns:dept="http://www.example.org/department"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd" 
        >
        <employee age="30">
            <!-- 部门名称 --> 
            <dept:name>人力资源部</dept:name>
            <!-- 员工名称 -->
            <name salary="3000.00">王晓晓</name>   
        </employee>
    </company>
  • 相关阅读:
    poj 1113 wall(凸包裸题)(记住求线段距离的时候是点积,点积是cos)
    Atcoder(134)E
    poj 1696 极角排序(解题报告)
    poj 1410 (没做出来,记得闲着没事看看这道题)
    poj1066 线段相交简单应用(解题报告)
    poj 2653 线段相交裸题(解题报告)
    poj 1269
    要习惯用vector代替数组
    在 Angularjs 中$state.go 如何传递参数
    CSS实现内容超过长度后以省略号显示
  • 原文地址:https://www.cnblogs.com/lulu638/p/4227154.html
Copyright © 2020-2023  润新知