xml

作者: 十六只猴子王 | 来源:发表于2019-04-16 20:21 被阅读0次

    1. xml简介:

    • eXtensible Markup Language:可扩展标记语言
      标记型语言:html是标记型语言,都是用标签操作
      可扩展:html里面的标签是固定的,每个标签都有特定的含义
      标签可以自定义,可以写成中文的标签eg:<猫></猫>
    • xml的用途
      主要的功能是存储数据,也可以显示数据
    • xml是w3c组织发布的技术
    • xml有两个版本1.0和1.1
      经常用的是1.0,因为1.1向下兼容

    2. xml的应用

    • 不同的系统之间传输数据


      屏幕快照 2019-04-11 下午9.19.40.png
    • 用来表示生活中有关系的数据


      屏幕快照 2019-04-11 下午9.21.13.png
    • 经常用来配置文件

    3. xml语法


    4. xml的文档声明

    文件后缀名 .xml
    第一步必须有个文档声明,表示写了xml文件的内容

    <?xml version="1.0" encoding="gbk"?>
    //必须写在第一行第一列
    
    • 属性:
      version:xml版本1.0
      encoding:xml编码 gbk utf-8 iso8859-1(不包含中文)
      standalone:是否依赖其他文件 yes/no
    • xml中文乱码问题


      屏幕快照 2019-04-11 下午9.37.42.png

      保存时候的编码和设置打开时的编码一致,不会出现乱码


    5. 定义元素(标签)

    • 标签的定义有开始必须有结束
      标签没有内容,可以在标签内结束eg:<a/>
      标签可以合理嵌套
      一个xml文档只有一个跟标签,其他标签必须在这个标签下面写
      在xml中空格和换行都会当成代码解析
    <aa>11111</aa>
    <aa>
      11111
    </aa>
    //两个表示的不一样
    
    • 命名规范:
      可以是中文
      大小写区分
      不能用数字和下划线开头
      不能以xml、XML、xmla等开头
      不能包含空格和冒号

    6. 定义属性

    • 属性定义的要求:
      一个标签可以有多个属性
      属性名称不能相同
      属性名称和属性值之间用=,属性值使用引号包起来

    7. 注释

    < !-- -->

    注释不能嵌套
    注释不能放在第一行


    8. 特殊字符

    转义字符

    特殊字符 替代字符
    & &
    < &lt ; //没有空格
    > &gt ;
    " &quo t;
    ' &apos ;

    9. CDATA区

    可以解决多个字符都需要转译的操作
    写法
    <![CDATA[.....]]>
    把特殊字符当作文本内容而不是标签

    10. PI指令

    可以在xm中设置样式

    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/css" href="css的路径"?>
    //对中文的标签名称不起作用
    

    11.xml的约束

    • 约束的技术:dtd约束,schema约束

    12. dtd快速入门

    • 创建一个文件后缀.dtd
      步骤:
      1. 看xml中有多少个元素,有几个元素,在dtd文件中写几个 <!ELEMENT>
      2. 判断元素是否是简单元素
        简单元素:没有子元素的元素
        <!ELEMENT 元素名称(#PCDATA)>
        复杂元素:有子元素的元素
        <!ELEMENT 元素名称(子元素)>
      3. 在xml中引入dtd文件
        <!DOCTYPE person SYSTEM"dtd文件的路径">
        如果打开xml文件使用浏览器打开的,浏览器只负责校验xml的语法,不负责校验约束

    13. dtd的三种引入方式

    • 引入外部文件
    `<!DOCTYPE person SYSTEM"dtd文件的路径">`
    
    • 使用内部的dtd文件
    <!DOCTYPE 根元素名称  [
          <!ELEMENT person(name, age)>
          <!ELEMENT person(#PCDATA)>
          <!ELEMENT age(#PCDSTS)>
    ]>
    
    • 使用外部的dtd文件
      <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
      学习到sturts2使用配置文件,使用外部的DTD文件

    14.使用dtd定义元素

    语法<!ELEMENT 元素名约束>

    • 简单元素:没有子元素的元素
      <!ELEMENT 元素名称(#PCDATA)>:约束name是字符串类型;
      <EMPTY>:元素为空(没有内容)
      <ANY>:任意
    • 复杂元素:有子元素的元素
      <!ELEMENT 元素名称(子元素)>
      表示元素出现的次数:+:表示一次或多次;?:表示零次或者一次;* :表示零次或者多次
      <!ELEMENT 元素名称 (name, age,sex,school)>:子元素用,隔开,表示元素出现的顺序; |:表示只能出现其中的一个

    15.使用dtd定义属性

    • 语法:
      1. CDATA:字符串
    <!ATTLIST birthday ID1 CDATA #REQUIRED>
    
    1. 枚举:表示只能在一定的范围里面选择出现的值,
    <!ATTLIST age ID2 (aa|bb|cc) #REQUIRED>
    
    1. ID:值只能是字母或者数字开头
    • 属性的约束:
      1. #REQUIRED:属性必须存在
      2. #IMPLIED:属性可有可无
      3. #FIXED:表示一个固定值#FIXED "aaa";属性的值必须是设置的这个值
    <! ATTLIST sex ID CDATA #FIXED "aaa">
    
    1. 直接值:不写属性,使用直接值,写了属性,使用设置的值
    <!ATTLIST school ID CDATA "www">
    

    16. 实体的定义

    语法:<!ELEMENT TEST "hhhhhh">
    使用实体:&实体名称;
    注意:定义实体需要写在内部dtd里面,如果写在外部dtd里面,有些浏览器鞋,内容得不到


    17. xml的解析简介

    解析方式:两种:dom和sax方式
    dom解析 :



    sam解析:


    • 想要解析xml,首先需要解析器
      不同的公司和组织提供了针对dom和sax方式的解析器,通过api方式提供:
      sum公司,dom4j组织,jdom组织,针对dom和sax分别提供了:jaxp、dom4j、jdom解析器

    18. jaxp

    jaxp时javase的一部分

    • jaxp解析器在jdk的javax.xml.parsers包里面
      四个类:分别是针对dom和sax解析使用的类
      1. dom:
        DocumentBuilder:解析器类
        这个类是一个抽象类,不能new,此类的实力可以从 DocumentBuilderFactory.newDocumentBulider()方法获得
        一个方法,可一个解析 xml parse("xml路径")返回的是Document整个文档
        放回的document是一个借口,父节点是Node,如果在document里面找不到想要的方法,到Node里面去找
        DocumentBuliderFactory:解析器工厂
        这个类也是一个抽象类,不能new
        newInstanse() 获取DocumentBuilderFactory的实例
        2.sax:
        SAXParser:解析器类
        SAXParserFactory:解析器工厂
    1. 使用jaxp

    相关文章

      网友评论

          本文标题:xml

          本文链接:https://www.haomeiwen.com/subject/nxaxwqtx.html