写unmanaged code在.net时代成为一种很悲惨的事,当你需要处理xml文件时,这种感觉会变得尤其强烈.fcl中的system.xml多简单啊,连steve ballmer都知道怎么用.
选择一:市面上的xml lib还是有几个的,最有名的当然是libxml.我一年前用过,很不错,我还特意写了一份简明教程,后来不知搁哪儿了. 【程序编程相关:使用WMI来得到系统的服务】
事情不会总是那么理想的,如果你要在c/c++程序里处理xml怎么办呢? 【推荐阅读:CodePlus将要推出新版了:)列举一】
先说一下在msdn哪里找文档吧,往下看的时候也好有个参考:在index里打:windows media services 9 series sdk=>programming reference=>programming reference (c++)=>xml dom interfaces (c++).什么?windows media?呵呵,不错,我觉得这个guide反而是最清楚的,你直接找msxml,得到的结果,我觉得还没这个好. 【扩展信息:ASP与ActiveX控件交互实战(一)】
选择二:ms的msxml,我要介绍的就是这个.
在c程序里调用msxml基本就是一堆com接口,不过在visual studio里操作先要做点简单的设置:
在你的project里add references=>com标签=>microsoft xml v4.0,5.0其实也有了,但因为是与office一起发布的,觉得有点怪,不想用,反正也未必用什么很怪异的功能,4.0可以了.
然后在加入这两行:
#include <msxml2.h>
#import <msxml4.dll>头文件与dll库.什么?在哪里加?头文件或者c/cpp文件啊,哪里合适放哪儿.
然后就开始编程了,先定义两个必用的变量:
ixmldomdocumentptr xmlfile = null;
ixmldomelement* xmlroot = null;为什么是必用的? 汗...
第一步当然是初始化com:
if(failed(coinitialize(null))) ....
接下来初始化xmlfile对象:
if(failed(xmlfile.createinstance("msxml2.domdocument.4.0"))) ...
然后就可以加载xml文件了:
_variant_t varxml(l"c:\\test.xml"); //l for unicode
variant_bool varout;xmlfile->load(varxml, &varout);取得root element:
xmlfile->get_documentelement(&xmlroot))
取得第一级element:
ixmldomnodelist* xmlchildnodes = null;
xmlroot->get_childnodes(&xmlchildnodes);遍历所有第一级element:
... 下一页