1. 程式人生 > >java學習筆記之xml

java學習筆記之xml

是什麽 read 文本標記 utf-8 轉義字符 本地緩存 system 進行 特殊

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() 獲得當前元素的文本內容

java學習筆記之xml