zoukankan      html  css  js  c++  java
  • XML——简介、语法、约束、解析

    XML简介

    1.eXtensible Markup Language: 可扩展标记型语言. 
        *标记型语言: html是标记型语言, 也就是使用标签来操作
        *可扩展: html中标签固定, 每个标签都有特定的含义. xml中的标签可以自定定义, 也可以写中文标签.
    2.用途:
        *html用于显示数据, xml也可以用于显示数据(不是主要功能)
        *xml主要用于 存储数据.
    

    XML的应用

    1.不同系统之间传输数据
    2.用来表示生活中有关系的数据
    3.常用于配置文件
        *
        比如连接数据库, 要将数据库用户名密码存储到xml中, 以后要修改数据库信息, 不需要修改源码, 只需要修改配置文件即可.
    

    XML的语法

    1.xml的文档声明
        1.创建一个文件,后缀名为.xml
        2.文档声明:写 xml 文件时必须要有文档申明,表示为 xml 文件:<?xml version="1.0" encoding="gbk"?> 文档申明必须写在第一行第一列
        3.属性:
            version:xml 的版本
            encoding:xml 编码,有 gbk、utf-8、iso8859-1(不包含中文)
            standalone:是否需要依赖其他文件 yes/no    
    2.定义元素(标签)
        1.标签定义有开始也要有结束: <person></person>
        2.标签没有内容,可以在标签内结束: <zy/>
        3.标签必须合理嵌套: <person><name></name></person>
        4.一个xml中,只能有一个根标签,其他标签都是这个标签的子标签.
        5.xml中把空格和换行会当成内容来解析,下面代码在html中相同,在xml中不同.
    3.定义属性
        1.一个标签上可以有多个属性
            <person id ="a" id2="b"></person>
        2.属性名不能相同
        3.属性名称和属性值之间用 =,属性值用引号(单引号/双引号)
    4.注释:<!-- -->
    5.特殊字符(替代符号后加;)
            <        &lt
            >        &gt
    6.CDATA区
        1.解决多个字符都需要转义的操作
        2.把内容放到 CDATA 里面,可以直接按 文本输出
        3.<![CDATA[ 内容 ]]>
    7.PI指令
        1.在 xml 中设置样式
        2.写法:<?xml-stylesheet type="text/css" href="css的路径"?>
        3.设置样式,只能对英文标签起作用,对中文不起作用
    

    XML约束

    为什么要有约束?
        *在xml技术中,编写一个文档/文件来约束一个xml文档的书写规范、称为xml约束。因为没有约束 编写的xml文件格式就不统一.
    DTD约束
        1.编写步骤
            1.创建一个文件 .dtd
            2.看xml中有多少个元素, 有几个元素,就在dtd文件中写几个<!ELEMENT>
            3.判断元素是简单元素还是复杂元素 
                复杂元素: 有子元素的元素
                <!ELEMENT 元素名称 (子元素)>
                简单元素: 没有子元素
                <!ELEMENT 元素名称 (#PDDATA)>
            4.在xml中引入dtd文件
        2.dtd的引入方式
            1.引入外部dtd约束
                <!DOCTYPE person SYSTEM "user.dtd">
            2.内部的dtd约束
                <!DOCTYPE person[
                <!ELEMENT person (name, age)>
                <!ELEMENT name (#PCDATA)>
                <!ELEMENT age (#PCDATA)>
                ]>
            3.使用外部的dtd文件(网络上的)
                <!DOCTYPE 根元素 PUBLIC "dtd名称" "dtd文档的url">
    
        3. 使用dtd定义元素
            1.语法:<!ELEMENT 元素名 约束>
            简单元素:<!ELEMENT name (#PCDATA)>
                (#PCDATA):约束 name 是字符串类型
                EMPTY:约束元素为空
                ANY:约束任意元素
            复杂元素<!ELEMENT person(name+,age?,sex*)>
                1.表示元素出现的次数:
                    +:表示1次或多次
                    ?:表示0次或1次
                    *:表示0次或多次
                2.子元素直接使用逗号隔开
                    表示元素出现的顺序
                3.子元素直接使用 | 隔开
                    表示子元素只能出现任意的一种
        4.使用dtd定义属性
            1.语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
            2.属性类型 
                CDATA: 字符串
                    <!ATTLIST name ID1 CDATA #REQUIRED>
                枚举: (aa|bb|cc)
                    <!ATTLIST age ID2 (19|20|21) #IMPLIED>
                ID: 值只能是字母或者下划线开头
                    <!ATTLIST name ID3 ID #FIXED "n1">
            3.属性的约束 
                1.#REQUIRED: 属性必须存在
                2.#IMPLIED: 属性可有可无
                3.#FIXED: 表示一个固定值. 
                    属性的值必须是设置的这个固定值.
    

    schema约束

    1.概述:
        *schema符合xml的语法
        *一个xml中可以有多个schema, 多个schema使用名称空间区分(类似java包名)
        *dtd里有有PCDATA类型, 但是在schema可以支持更多的数据类型.
        *schema更加麻烦, 限制更加严格.
        *以.xsd为后缀名
    2.schema 文件里面开头有几个属性
        1.xmlns=“http://www.w3.org/2001/XMLSchema”
            *表示当前xml是一个约束文件
        2.targetNamespace=“http://www.sunny.com/20191229”
            *使用schema约束文件,直接通过这个地址引入约束文件,可以是个随意的地址
        3.elementFormDefault=“qualified”>
            表示质量良好
    3.编写步骤
        1.看 xml 中有多少个元素,有多少个元素就写多少个 
        2.看是简单元素还是复杂元素
            *复杂元素:
    
    子元素 *简单元素:写在复杂元素里面 3.在 xml 中引入 xsd 约束文件 * targetNamespace + 空格 + 约束文档的地址路径

    复杂元素指示器

    1.<sequence>:表示元素的出现顺序
    2.<all>:表示元素只能出现一次
    3.<choice>:表示元素只能出现其中一个
    4.<maxOccurs=“unbounded”>:表示元素出现的次数,unbounded表示不限制次数
    5.<any>:表示任意元素
    

    约束属性

    1.位置:写在复杂元素里面的 </complexType> 之前
        name:属性名称
        type:属性类型 int string
        use:属性是否必须出现 required
    

    xml解析简介

    1.xml是标记型文档.
    2.js使用dom解析标记型文档 
        *根据html的层级结构, 在内存中分配一个树形结构,把html的标签,文本,属性都封装成对象.
        *document对象、element对象、属性对象、文本对象、Node节点对象.
        *xml的解析技术: DOM和SAX
    

    DOM和SAX解析对比

    1.DOM 解析:
        *根据 xml 的层级结构在内存中分配一个树形结构,把 xml 的标签,属性和文本都封装成对象.
        *优点:很方便实现增、删、改操作
        *缺点:消耗内存,会造成内存溢出
    2.SAX 解析
        1.采用事件驱动,边读边解析
            *从上到下,一行一行的解析,解析到某个对象就返回对象名称
        2.优点:不占内存,方便实现查询操作
        3.缺点:只能读取,不能实现增、删、改操作
    

    解析器

    1.不同的公司和组织提供了针对 DOM和 SAX 方式的解析器,都是通过 api 方式提供的,主要有
        *sun 公司提供的针对 dom 和 sax 解析器:Jaxp
        *dom4j 组织提供的针对 dom 和 sax 解析器:dom4j(开发中用的最多)
        *jdom 组织提供的针对 dom 和sax 解析器:Jdom
        *Java的HTML解析器,可以直接解析URL地址、HTML 文本内容:Jsoup
  • 相关阅读:
    springboot 入门
    json-lib 的 maven dependency 引入及Jar包下载
    DataGridView 使用技巧精华
    SqlServer无备份下误删数据恢复
    Reflector 已经out了,试试ILSpy
    C# 反射,动态编译
    windows8和windows server2012不联网安装.net 3.5(包括2.0和3.0)
    如何附加被分离的质疑数据库? [转]
    easyui validatebox 验证类型
    所见即所得:七大无需编程的DIY开发工具
  • 原文地址:https://www.cnblogs.com/linjing111/p/12753226.html
Copyright © 2011-2022 走看看