【XML】快速了解XML

XML定义:eXtensible Markup Language可扩展标记语言

XML
  • xml和html区别:
    • html侧重数据展示,xml侧重数据存储
    • html标签都是固定的,xml标签是可以自定义的
    • html标签的结构和样式结合在一起,xml标签的结构和样式分离
  • xml作用:
    • 可以当做小型数据库使用
    • 可以在网站里当做接口服务使用
    • 可以当做配置文件使用
  • xml语法规范标准:
  • 	声明一个处理指令<?xml version="1.0" encoding="utf-8"?>
    		xml内容可以被浏览器直接解释运行,当看到处理指令的时候会自动调用xml解释器
    	文档的树状结构:有且仅有一个根节点
    	标签必须闭合:单标签表示方法:<img/>,<br/>,<hr/>,<input/>
    	标签大小写一致(建议小写)
    	属性全小写,属性必有值,值必须有引号
    	标签可以嵌套,但不能交叉
    		<a><b></b></a>可以
    		<a><b></a></b>不可以
    	特殊符号使用符号实体:
    		单引号:&apos;
    		双引号:&quot;
    		空格:&nbsp;
    		&符号:&amp;
    		>符号:&gt;
    		<符号:&lt;
    	大段内容有许多特殊符号时,使用<![CDATA[]]>表示
    	xml标签名字组成部分:
    		Utf-8  字符集允许汉字当作标签名字
    		普通字符可以有:字母、数字、-中恒线、_下划线,.点
    		数字不能作为首字母出现
    
    DOM
    DOM(Document Object Model 文档对象模型)定义了访问和处理xml文档的标准方法
  • dom操作:

      • dom创建xml文档
        • 元素节点:createElement(标签名称)
        • 文本节点:createTextNode(文本内容)
        • 属性节点:createAttribute(属性名称)
        • CDATA节点:createCDATASection(文本内容)
        • 创建关系:appendChild()
        • 设值:setAttribute(名称,值)

      • 父节点->removeChild(子节点)

      • 父节点->replaceChild(new,old)
    • 查(读取):
      • 节点类型nodeType:
      • 元素节点
      • 属性节点
      • 文本节点
      • 注释节点
      • CDATA节点
      • 文档节点
  • dom方式解析xml信息:
    • childNodes:获得子节点信息(回车空白页算作具体子节点)
    • length:获得列表中元素的个数
    • getElementsByTagName():根据标签名获得对应的元素节点对象
                  以数组列表形式返回节点(即使有一个节点也如此)
                  该方法既可以给dom对象调用,也可以给元素节点对象调用
    • nodValue:元素节点调用,获得内部的文本信息
    • item(index):从数组列表中获得具体一个节点
    • 元素节点.getAttributeNode(属性名称) 获得属性节点
    • firstChild:获得第一个子节点
    • lastChild:获得最后一个子节点
    • nextSibling:获得下一个兄弟节点
    • previousSibling:获得上一个兄弟节点
  • dtd

    DTD:document type definition 文档类型定义
    良好的xml文档:符合xml的语法规则
    有效的xml文档:符合xml语法规则的同时,还需要符合dtd文档类型定义
    利用dtd可以对xml文档的各个节点进行约束定义

  • 元素约束规则:
    • <!ELEMENT 元素名 使用规则>
    • 使用规则:
      • (#PCDATA):元素内部必须包含字符串内容
      • EMPTY:元素必须为空
      • ANY:元素内部内容可以为任何内容(如果包含的内容为元素,则该元素必须在dtd里声明)
      • (子元素):当前元素内部可以保护一个“子元素”
      • (子元素+):当前元素内部可以保护“最少一个,最多不限制”的“子元素”
      • (子元素?): 当前元素内部出现0或1个该子元素
      • (子元素*): 当前元素内部出现0或任意个该子元素
      • (子元素|子元素): 元素关系为“或”,二选一
      • (子元素1,子元素2):当前元素内部必须包含子元素1,2,并且它们有顺序要求
  • 属性约束:
    • 属性类型:
      • CDATA:属性值是字符串信息
      • ID:属性的值在整个文档的ID属性里面是唯一的,如果属性的值类型为ID,则值的内容与xml标签名称命名规则一致
      • IDREF:reference 属性的值必须来源于ID的信息值
      • IDREFS:属性的值必须来源于ID的信息值,并且值可以通过“空格”区分获得多个
      • Enumerated:枚举类型
    • 属性特点:
      • #REQUIRED:属性必须设置
      • #IMPLIED:属性可以设置,也可以不设置
      • #FIXED value:固定值,属性可以不设置(该属性会自动设置),如果设置,其值必须为value
      • #default value:默认值,可以自己定义,如果不定义属性,则该属性会被自动设置,其值为默认值。如果不设置,其值可以是其他值
    • 属性约束两个注意点:
      • 如果属性的类型是ID,则其值的内容规则与xml标签名称规则一致
      • ID属性类型不能与特点#FIXED结合使用
  • 实体约束:
    • 实体:可以将大段内容定义到一个变量里面,通过调用变量就可以显示对应内容 使得对大段内容的开发与维护变得方便
    • 内部实体
      • 声明:<!ENTITY 名称 值>
      • 使用:&名称;
    • 引入实体:
      • 声明:<!ENTITY % 名称 SYSTEM 'dtd文件'>
      • 使用:%名称;
    • 参数实体:可以把dtd的一部分内容放到一个变量里面,在dtd里面可以调用该变量
      • 声明:<!ENTITY % 名称 值>
      • 使用:&名称;
      • 注意:参数实体只能在外部dtd中使用
    • 外部引入实体:可以把“全部”dtd内容放在一个文件里,进行引入使用:
  • dtd文件在本网站服务器内部:
    	<!DOCTYPE    根节点名称   SYSTEM  'dtd_url'>
    dtd文件存在于外网:
    	<!DOCTYPE    根节点名称   PUBLIC  DTD 自定义名称   'DTD外网url地址'>
    
    最后结语

    RSS(really simple syndication):是网站把新闻信息以一种非常简洁的方式提供给用户查看的特殊机制,就是我们在CSDN网站上看到的RSS订阅,它其实是一种特殊的xml数据格式
    实践出真知,还是要少说多做的~
    感谢您的阅读~

    posted @ 2018-10-08 10:16  郑璐璐  阅读(128)  评论(0编辑  收藏  举报