java学习笔记之xml

xml学习笔记

1:xml的概述

   1.1 xml是什么
     标记语言:语言中出现了<a></a>的标签
      a:HTML 超文本标记语言 (语法非常严格,不能随意的定义标签)
      b:XML 可扩展的标记语言(用户可以根据自己的需求,随意的定义标签)
      <垃圾></垃圾>
     开发的组织:w3c 开源精神 HTML XML Java Script
     版本:使用 1.0

  1.2 xml有什么用
    a:存储数据
    b:作为配置文件
  1.3 xml怎么用


2:xml的语法
  2.1 文档声明
    <?xml version="1.0" encoding="UTF-8"?> encode:编码 decode:解码
    1) 文档声明必须为<?xml开头,以?>结束;
    2) 文档声明必须从文档的0行0列位置开始;
    3) 文档声明只有2个属性:
      a) versioin:指定XML文档版本。只会选择1.0;
      b) encoding:指定当前文档保存时编码方式。可选属性,默认值是UTF-8;

  2.2 元素(element)
    1. 元素是XML文档中最重要的组成部分, 开始标签 元素体 结束标签
    2. 普通元素的结构开始标签、元素体、结束标签组成。例如:<hello> 大家好 </hello>
    3. 元素体:元素体可以是元素,也可以是文本,例如:<b><a>你好</a></b>
    4. 空元素:元素没有元素体,空元素只有开始标签,而没有结束标签,但元素必须自己闭合,例如:<c/>
    5. 元素命名:
      a) 区分大小写
      b) 不能使用空格,不能使用冒号:
      c) 不建议以XML、xml、Xml开头
    6. 格式化良好的XML文档,必须只有一个根元素。除了根元素,所有元素必须被其他元素包含


  2.3 属性(attribute)
    1. 属性是元素的一部分,它必须出现在元素的开始标签中
    2. 属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引
    3. 一个元素可以有0~N个属性,但一个元素中不能出现同名属性
    4. 属性名不能使用空格、冒号等特殊字符,且必须以字母开头


    属性和子元素的选择
      a:如果你描述的数据是对元素唯一的标识(id),则应该放在属性中
      b:如果你描述的数据需要进行再次扩展,必须放在子元素中
  2.4 注释
    XML的注释,以“<!--”开始,以“-->”结束。注释内容会被XML解析器忽略!
    a)注释不能放在文件的第一行
    b)注释的快捷键
      注释 :ctrl + shift + /
      反注释 :ctrl + shift +
  2.4 转义字符
     转义字符
      因为很多符号已经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符,例如:“<”、“>”、“’”、“””、“&”。
      < --> &lt;
      > --> &gt;
      " --> &quot;
      ' --> &apos;
      & --> &amp
  2.5 CDATA区
      <![CDATA[
      任意内容
      ]]>
    当你的标签内容有大量的转义字符时,则可以使用CDATA区,一次性全部转义


3:xml的约束
  xml约束:xml中的标签默认是可以随便扩展,这样就造成了xml的随意性太大,为了给xml一个统一 的规范,就必须使用xml约束

  3.1 DTD约束
    DTD(Document Type Definition),文档类型定义
      约束:标签的名字,标签的属性,标签的顺序
      我们的任务就是根据已经提供好的DTD约束文档来定义xml文件

  3.2 DTD约束步骤
     步骤1:创建bean-dtd.xml文档,并将“bean.dtd”拷贝相同目录下
     步骤2:从DTD文档开始处,拷贝需要的“文档声明”
     步骤3:完成xml内容编写

  3.4 DTD的文档声明
    1: 内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。
      <?xml version="1.0" encoding="utf-8" ?>
      <!DOCTYPE beans [
      ... //具体的语法
      ]>
      <beans>
      </beans>

    2: 本地DTD,DTD文档在本地系统上,公司内部自己项目使用。
      <?xml version="1.0" encoding="utf-8" ?>
      <!DOCTYPE beans SYSTEM"bean.dtd">
      <beans>
      </beans>

    3: 外部DTD—公共DTD,DTD文档在网络上,一般都有框架提供。
      需要有网络,当第一次使用之后,则会在本地缓存。
      <?xml version="1.0" encoding="UTF-8"?>
      <!-- DTD的名字-->
      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
      <!-- DTD的网络位置-->
      "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
      <beans>

  3.5 元素
    <!ELEMENT 元素名 元素描述>
    ?:可以出现,但只能出现一次
    *:允许出现多次,也可以是0次
    +:该对象至少出现一次,但可以是多次
    ,:元素按照指定的顺序出现

    //------------------------------------------
    根元素:beans 而且有两个子元素:bean(0次或多次) 和import(0次或多次,而且必须按照指定的顺序出现
    #PCDATA:表示元素体是文本

    <!ELEMENT beans (bean*,import*) >
    <!ELEMENT bean (property*)>
    <!ELEMENT property (#PCDATA)>

    <!ELEMENT import (#PCDATA)>

    bean有三个属性:id className type
    <!ATTLIST bean id ID #REQUIRED
    className CDATA #REQUIRED
    type CDATA #IMPLIED
    >

    <!ATTLIST property name CDATA #REQUIRED
    value CDATA #REQUIRED
    >

    <!ATTLIST import resource CDATA #REQUIRED>


  3.2 Schema约束
    Schema是新的XML文档约束;
    Schema要比DTD强大很多,是DTD 替代者;
    Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。
    Schema 功能更强大,数据类型更完善
    Schema 支持名称空间
  3.3 约束文档和XML关系
    W3C提出Schema约束规范时,就提供“官方约束文档”。我们通过官方文档,必须“自定义schema 约束文档”,开发中“自定义文档”由框架编写者提供。我们提供“自定义文档”限定,编写出自己的xml文档。
  3.3 命名空间
    默认的命名空间
    xmlns="http://www.itcast.cn/bean"
    显式的命名空间
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    使用标签时,必须加前缀


  4:xml解析
    就是取出xml存储的数据(属性和文本)
    <!-- xml文件-->

    常用API如下:
    1. SaxReader对象
      a) read(…) 加载执行xml文档
    2. Document对象
      a) getRootElement() 获得根元素
    3. Element对象
      a) elements(…) 获得指定名称的所有子元素。可以不指定名称
      b) element(…) 获得指定名称第一个子元素。可以不指定名称
      c) getName() 获得当前元素的元素名
      d) attributeValue(…) 获得指定属性名的属性值
      e) elementText(…) 获得指定名称子元素的文本值
      f) getText() 获得当前元素的文本内容

原文地址:https://www.cnblogs.com/xuzhaocai/p/8127614.html