天天看點

【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資料格式

    實踐出真知,還是要少說多做的~

    感謝您的閱讀~