【IT168 技術文檔】或許你看到這個標題會感到非常的驚訝,因為截至到現在,恐怕是沒有多少人沒有使用過XML文檔了吧。
不過如果你是一個VC6或者是VC7中native code的使用者的話,我想您或許會產生一些興趣。
在MFC中沒有提供對XML的操作的類,如果是忠實的COM支援者的話,可以選擇使用微軟的MSXML DOM 來操作一個xml檔案。
如果是開源,又或者是對跨平台的支援的話,您可以選擇使用WFC,XML4C 當然還有apache 的著名的Xerces C++ 來操作,使用這些類庫基本上都可以比較簡單方便高效的實現對xml檔案的讀寫。並且都支援XML 的最新標準。
不過,不要忘記一件事情,需要使用VC來讀寫XML檔案的基本上都是一些設定檔,比如Visual Studio .net 的工程檔案,這樣的檔案的大小一般都會限制在一定的容量以內。如果我們採用上面的任何一個方法,都需要下載幾M甚至10幾M的庫檔案。真的是有些不合算。
感謝sourceforge,感謝google 給我們提供了足夠多的資源來簡化我們的開發,在這裡我給大家介紹一個短小精悍的XML parse class----TinyXml,tinyXml 不光短小,效率也是很高,而且使用這個class 可以很快地定位 我們需要在Xml中定位的Node。它提供了一個叫做 TiXmlNode* FirstChild ( const std::string& _value ) 的方法,以最簡單的方式開始我們對 Xml 檔案節點的讀寫。
經過實踐,發現這個class 讀寫xml 的速度也還是很不錯的,要是說缺點,就是對Unicode的支援還有一些bug。比如說下面的xml 標籤的解釋就有bug
<Filter Name="程式" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx">
但是如果你改成
<Filter Name="程式file" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx">
的話,就可以了。 1 http://www.jclark.com/xml/expat.html