XML

1. 概述

  1. 概念:Extensive markup Language,可扩展标记语言
  2. 可扩展:标签可自定义
  3. 功能:存储数据,可做配置文件,可在网络中传输
  4. xml和html的区别
    • xml标签自定义,html标签预定义
    • xml语法严格
    • xml存储数据,html展示数据

2.语法

  • 基础语法

    • 文档的后缀名为 .xml
    • xml第一行必须定义为文档声明
    • xml文档中有且仅有一个根标签
    • 属性值必须使用引号引起来
    • 标签必须正确关闭
    • 标签名称区分大小写
    1
    2
    3
    4
    5
    6
    <?xml version='1.0'?>
    <users>
    <user id="user1">
    <name>hxx</name>
    </user>
    </users>
  • 组成部分

    • 文档声明

      • 格式:<?xml 属性列表 ?>
      • 属性列表
        • version:版本号,必须写
        • encoding:编码方式。告知解析引擎当前文档使用的字符集,默认ISO-8859-1
        • standalone:是否独立。取值yes no,表示是否依赖与其他文件
    • 指令:<?xml-stylesheet type="text/css" href="../CSS/a/css"?>

    • 标签

      • 名称可以包含字母数字和其他的字符
      • 名称不能以数字或者标签符号开始
      • 名称不能以字母xml、XML等等开始
      • 不能包含空格
    • 属性

    • 文本内容

      • CDATA区:在该区域中的数据会被原样展示

        格式:<![CDATA[文本内容]>

3.约束

  • 规定xml文档的书写规则

  • 分类

    • DTD

      • 外部DTD:将约束文件定义在外部的dtd文件中

        • 引入本地DTD文件:<!DOCTYPE 根标签名 SYSTEM "dtd文件位置">
        • 引入网络中DTD文件:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件位置的url">
      • 内部DTD: <!DOCTYPE 根标签[内容]>

      • student.dtd

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <!ELEMENT students (student*) >
      <!--*号代表出现0次或多次,+号代表至少出现1次
      根标签students,子标签student-->
      <!ELEMENT student (name,age,sex) >
      <!--#PCDATA代表字符串-->
      <!ELEMENT name (#PCDATA) >
      <!ELEMENT age (#PCDATA) >
      <!ELEMENT sex (#PCDATA) >
      <!--student标签有ID属性,且必须有-->
      <!ATTLIST student number ID #REQUIRED>
      • xml文件
      1
      2
      3
      4
      5
      6
      7
      8
      9
      <?xml version='1.0' encoding='gbk'?>
      <!DOCTYPE students SYSTEM "student.dtd">
      <students>
      <student number="stu1">
      <name>hxx</name>
      <age>22</age>
      <sex></sex>
      </student>
      </students>
    • schema:复杂的约束技术,文件后缀名 .xsd

      • 引入约束文件

        根元素

        引入xsi前缀:xmlns:xsi = “”

        引入xsd文件命名空间,xsi:schemaLocattion=””

        为每一个xsd约束声明一个前缀,作为标识:xmlns=””

4.解析

  • 操作xml文档,将文档中的数据读取到内存中
  • 解析方式:
    • DOM:将标记语言一次性加载进内存,在内存中形成一颗dom树
      • 优点:操作方便,可以对文档进行CRUD所有操作
      • 缺点:占内存
    • SAX:逐行读取,基于事件驱动
      • 优点:占内存小
      • 缺点:只能读取,不能增删改
  • 常见解析器
    • JAXP:sun公司提供的解析器,支持dom和sax两种思想
    • DOM4J
    • Jsoup:java的HTML解析器
    • PULL:Android操作系统内置的解析器,sax方式