一篇xml文檔由標記和內容組成,看起來和html文檔很相似。元素是xml最主 要的標記,與html本質的不同是xml中元素沒有預定義,而是由用戶對自己文檔中使用的元素進行定義,這就需要加入“文檔類型聲明”(dtd)。通過 dtd,一方面用戶可以在文檔中定義自己的標記,另一方面分析器也可以得到關于文檔內容和結構方面的元信息。這樣,xml文檔就具有了可擴展性、結構性和 可驗證性,同時,xml文檔也具備了存儲結構化數據的能力。考慮到與html的兼容,dtd不是xml文檔必須的成份,具有dtd的xml文檔稱作 “valid”文檔,否則是“well-formed”文檔。
xml文檔可以表示結構化數據,可作爲文本數據庫存儲數據,也可作爲行業中數據交換的標准表示。這些都需要對xml文件的數據進行描述,如數據類型、長度 等,dtd就是完成這部分工作的。然而,由于dtd采用的是與xml文檔完全不同的語法,也就是說,需要同時有兩套分析器來處理dtd和xml文檔本身。 另外,dtd的語法也相對複雜和古怪,不大易用,所以,又産生了xml schema。
其實,xml schema本身就是一個xml文件。但不同的是,schema文件所描述的是引用它的xml文件中的元素和屬性的具體類型。除了上面提到的以外,schema比dtd還有以下優點:
xml schema利用namespace將文檔中特殊的結點與schema說明相聯系,一個xml文件可以有多個對應的schema,而一個xml文件只能有一個對應的dtd。
xml schema內容模型是開放的,可以隨意擴充,而dtd無法解析擴充的內容。
dtd只能把內容類型定義爲一個字符串,而xml schema允許把內容類型定義爲整型、浮點型、布爾型或者許多其它的簡單數據類型。
解析 XML 有兩種:DOM和SAX
DOM 模型需要對整個XML文檔進行掃描,然後解析生成一個對象樹,XML 文檔中的所有標簽和屬性都是用對象來表示,而不是一個孤立的文本。
SAX 是事件驅動的。就是說,它可以在處理的過程中生成不同的消息,並調用相應的函數進行處理。
關于 XML 標 參見 。
爲了方便xml 文檔的編寫,校驗等,可以使用 xml 文檔編輯器,例如 xmlspy,xmlwrite等。
運行 XMLin需要包 XML::Simple,請自行安裝,比如perl -MCPAN -e shell安裝,比如rpm、dpkg、apt-get、yum等等~
比如一個xml文件內容如下:
|
解析的源碼這麽寫,注意一個指針出來,其N維哈希、數組是怎麽表達的:
|
如果 XMLin沒有輸入值,它會自動去搜索跟程序相同名字的 .xml文件的,比如我們以空參數運行:
|
就是這些,如果感興趣更多,比如 XMLout怎麽輸出XML的,自己放狗出去搜索吧~~