1. 程式人生 > 其它 >XML文件

XML文件

XML程式語言

  • 名稱:可擴充套件標記程式語言

  • 歷史:誕生於1996年,在2004年進行一次更新,語法版本號升級1.1,但不被接受。現在用的是1.0版本

  • xml 文件作用:

    • 最初XML文件作為【網頁】來使用

    • 在Java中使用xml文件來代替properties作為配置檔案

XML語法

  • HTML:是從XML演化出來的一種程式語言。HTML絕大多數語法都是來自於XML

  • 一個XML文件必須以一個【根目錄標籤】為開始,其他標籤必須作為【根目錄標籤】的直接子標籤或者間接子標籤出現。

  • HTML標籤對於英文字母的大小寫是忽略不計的,但是XML標籤必須區分字母的大小寫

  • HTML標籤中屬性內容可以通過一對""包含,也可以不用,但是XML標籤屬性內容必須包含在一對""或者''中

XML文件讀取方式

  • SAX讀取方式:根據開發人員需要,一次將若干個滿足條件標籤載入到記憶體中

    • 優點:可以節省記憶體

    • 缺點:如果讀取大量標籤資訊時,執行效率相對較低

  • DOM讀取方式:一次性將xml文件所有的內容載入到記憶體中

    • 缺點:浪費記憶體

    • 優點:如果讀取大量標籤資訊時,此時由於是在記憶體中進行定位,所以執行速度較快

  • 實際開發中,一般都採用DOM方式來讀取

XML約束文件

  • XML約束文件作用:

    • 設定可以在當前XML文件宣告的【標籤型別名】

    • 設定可以在標籤中出現的【屬性名】

    • 設定標籤之間父子關係和兄弟關係

  • XML約束文件分類:

    • DTD約束文件:簡單約束文件

    •  1 <?xml version="1.0" encoding="utf-8" ?>
       2 <!--
       3     使用DTD文件前,必須將以下程式碼匯入到目標檔案:
       4     <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
       5  6     1. <!ELEMENT 標籤型別名>:宣告可以在XML文件中出現標籤型別名
       7     2. <!ATTLIST 標籤型別名 屬性名>:宣告可以在當前標籤內部使用的屬性名稱
       8     3. <!ELEMENT 標籤型別名 (子標籤?)>:子標籤可以出現在父標籤內部,也可以不出現
      
      9 子標籤如果出現,只能出現一次 10 4. <!ELEMENT 標籤型別名 (子標籤+)>:子標籤必須出現在父標籤內部,並可以出現多次 11 5. <!ELEMENT 標籤型別名 (#PCDATA)>:當前標籤沒有子標籤 12 6. <!ELEMENT 標籤型別名 (子標籤*)>:子標籤可以出現在父標籤內部,也可以不出現 13 子標籤如果出現,可以出現多次 14 7. <!ELEMENT 標籤型別名 (子標籤)>:子標籤必須出現在父標籤內部,且只能出現一次 15 8. <!ELEMENT 標籤型別名 (子標籤|子標籤)>:這兩個子標籤必須有一個子標籤出現在父標籤中 16 但是不能同時出現 17 18 --> 19 <!ELEMENT url-pattern (#PCDATA)> 20 <!ELEMENT servlet-mapping (servlet-name,url-pattern)> 21 <!ELEMENT welcome-file (#PCDATA)> 22 <!ELEMENT welcome-file-list (welcome-file+)> 23 <!ELEMENT web-app (servlet*,servlet-mapping*,welcome-file-list?) > 24 <!ELEMENT servlet-name (#PCDATA)> 25 <!ELEMENT servlet-class (#PCDATA)> 26 <!ELEMENT description (#PCDATA)> 27 <!ELEMENT jsp-file (#PCDATA)> 28 <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))> 29 30 <!ATTLIST web-app version CDATA #IMPLIED>

      SCHEMA約束文件:高階約束文件(常用)

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!--
     3     使用Schema約束前,必須將以下程式碼匯入到目標檔案
     4     <web-app xmlns="http://www.w3.org/2001/XMLSchema"
     5              xmlns="http://www.example.org/web-app_2_5"
     6              xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
     7              version="2.5">
     8 -->
     9 <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
    10             targetNamespace="http://www.example.org/web-app_2_5"
    11             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    12             xmlns:tns="http://www.example.org/web-app_2_5"
    13             elementFormDefault="qualified">
    14     <xsd:element name="web-app">
    15         <xsd:complexType>
    16             <xsd:choice minOccurs="0" maxOccurs="unbounded">
    17                 <xsd:element name="servlet">
    18                     <xsd:complexType>
    19                         <xsd:sequence>
    20                             <xsd:element name="servlet-name"></xsd:element>
    21                             <xsd:element name="servlet-class"></xsd:element>
    22                         </xsd:sequence>
    23                     </complexType>
    24                 </xsd:element>
    25                 <xsd:element name="servlet-mapping">
    26                     <xsd:complexType>
    27                         <xsd:sequence>
    28                             <xsd:element name="servlet-name"></xsd:element>
    29                             <xsd:element name="url-pattern"></xsd:element>
    30                         </xsd:sequence>
    31                     </complexType>
    32                 </xsd:element>
    33                 <xsd:element name="welcome-file-list">
    34                     <xsd:complexType>
    35                         <xsd:sequence>
    36                             <xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
    37                         </xsd:sequence>
    38                     </xsd:complexType>
    39                 </xsd:element>
    40             </xsd:choice>
    41             <xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
    42         </xsd:complexType>
    43     </xsd:element>
    44 </xsd:schema>