1. 程式人生 > >【XML】快速瞭解XML

【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資料格式
    實踐出真知,還是要少說多做的~
    感謝您的閱讀~