XmlLite使用簡單介紹
最近因為項目的需要,將一個應用軟件的底層XML處理模塊進行重寫,由MSDOM改用xmlLite來完成。XmlLite是微軟專門針對C++使用者開發的一個輕量級開發包,只具備基本的I/O功能。提供了IXmlReader, IXmlWriter對XML文件進行簡單的讀寫操作。原理很簡單,在讀一個文件時,循環讀取各個節點,然后根據不同的節點類型讀取其相關屬性數據等。XMLLite中的數據類型主要封裝在XmlNodeType中,常使用到的有XmlNodeType_None, XmlNodeType_Element,XmlNodeType_EndElement等。在寫數據時,主要根據不同的節點類型,調用相關的API來完成。值得注意的是,由于XMLLite只提供順序化寫的功能,因此在寫具有多個深度的節點類型時,需要控制好WriteEndElement()函數的出現順序等,所以這些都可以通過函數的遞歸來完成。由于XmlLite只提供簡單的讀寫等功能,因此,在實際應用中,需要對XMLLite提供的功能進行一定的封裝,從而提供自己的API功能。下面簡單說說我們采用的思路。在讀Xml文件時,需要在加載過程建立XML文件的內部數據結構。這可以通過兩種方式來完成,一種是在一個循環或者遞歸過程中,將整個XMLload進來;另外一種方法是一次只加載一層節點,然后遞歸加載其子節點。前面一種方法是在處理大XML文件時,可能會有memory footprint問題。所以最終采用了后面的方法。
在實現過程中,我們采用了composite模式來組織XML文件樹結構。通過使用list來建立樹結構。全部操作封裝在一個類中。
有關相關原因,xmlLite的具體封裝實現方法就不提及了。開發過程中,遇到的主要難點是數據的讀寫和保存,關鍵是數據結構的處理,其他部分都比較容易。
這我開通blog后的第一篇文章,呵呵,也不知道怎么寫好。以后會盡力寫好點^_^.