XML 初級教程(一)
作者:我本楚狂人
下載源代碼
一、XML是什麼?
XML即extensibe markup language的縮寫,也就是可擴展標識語言。
它是作爲一種通用數據結構而出現的,儘管它曾被認爲取代html。
實際上我們可以將其看作"文本數據庫" 。 XML文件通常需要一個驗證文件,就像數據庫的字符段表一樣。常用的爲DTD文件,現在比較流行的爲XSL文件。
二、解析XML的方法
使用C++解析XML的最大好處是速度快,特別是大量數據時。
XML不像html有固定的標記,沒有固定的解析器如IE或Netscape可以解析XML真正含義。 我們需要自己編寫一段程序做這樣的事情。
就像我們可以用ODBC/ADO讀取數據庫一樣,我們可以用SAX/DOM解析XML文件。
三、SAX vs DOM
SAX是基於事件驅動的, 通過判斷每一行數據的類型(節點/元素/其他)而決定如何處理。DOM則對XML文件整體產生一個樹狀結構,很顯然DOM更實用一些,因爲可隨時讀取文檔任意節點數據,但其對內存要求大一些。SAX會快一些,因爲解析時只保存當前行的信息。不管用那種方法解析出的數據都需要我們決定其用途,例如一個含圖形數據XML,就需要調用GDI函數根據解析出來的數據畫圖。
SAX簡介:
startDocument(); //打開XML文檔; startElementz(); //處理XML數據; endElement(); endDocument(); //關閉XML文檔;例子:
假設XML文件, <?xml version="1.0"?> <parts> <part>TurboWidget</part> </parts> SAX處理分析過程; StartDocument( ) StartElement( "parts" ) StartElement( "part" ) Characters( "TurboWidget" ) EndElement( "part" ) EndElement( "parts" ) EndDocument( )DOM簡介:
例子:
IXMLDOMDocument* pDoc;//XML文檔Object; CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pDoc); XMLDOMNode * pNode;//XML節點Object; pDoc->QueryInterface(IID_IXMLDOMNode,(void**)(&pNode));
數據處理(可以是遞歸函數):
GetChildItem(); //獲得子節點 節點處理: get_nodeName();//節點名 get_nodeTypeString();//節點含數據 get_nodeType();//節點類型四、最後提供一個DOM程序例子,該例子僅僅能生成XML的樹狀圖,沒有更多處理。 更多內容將在以後發佈。
五、希望能給大家幫助,歡迎大家批評指正,具體請看源代碼。使用開發包爲MSXML3,當然用Apache Xerces原理也是一樣的。