本人是VC++的新手,现在需要解决XML文件的读取与保存,搞了一天了也没什么头绪,请哪个高手帮帮忙。最好能写个完整的程序(直接帖出来也行)在线等。

解决方案 »

  1.   

    源码太复杂而且是公司的,不方便完全贴出来,我说下思路:我是通过微软的xml解析器读取的,首先你要安装SDK,去微软网站有下.然后在你的代码处加上
    #import <msxml4.dll> raw_interfaces_only
    using namespace MSXML2;接着你定义一个IXMLDOMDocumentPtr m_pXmlDomDocument;初始化接口,
    就可以操作xml各个结点了,具体信息你可以查看SDK自带的帮助信息.
      

  2.   

    我做的那个是公司的一个DLL,解析SVG文件(基于XML)格式的图形,然后显示.
    因为是公司的源码,不方便传播,请见谅.你有什么问题说出来看能不能帮你的忙.
      

  3.   

    我也是刚刚开始学习VC++,有好多东西都不懂。
    昨天做个东西要用到XML,但是我对这个是一点都不了解的,在网上找了点资料看了看但是还是不知道怎么去写代码,写了也是有一大堆的错误,所以想找个例子看看
    你能不能给我看看你的部分代码,比如头文件的设置、变量的定义、还有就是读写XML的操作代码
    (如果不能就算了,仍然要谢谢你的!很感谢)
      

  4.   

    是这样,你首先要在头文件加上这样的语句,才能使用SDK.
    #import <msxml4.dll> raw_interfaces_only
    using namespace MSXML2;然后我先假设你把他封装为一个类,在类里定义一个智能指针
    IXMLDOMDocumentPtr m_pXmlDomDocument;/////////////下面是的步骤写成函数封装起来/////////////////现在还不能用,需要这样的操作
    CoCreateInstance(__uuidof(DOMDocument40),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IXMLDOMDocument),
    (void**)&m_pXmlDomDocument);完成了这一步,就可以使用这个指针了.接着,我假设你要打开的文件名称为CString strPath;转换一下:
    BSTR bsPath = SysAllocString(strPath.GetBuffer(strPath.GetLength()));定义一个变体:
    VARIANT varLoadVariant;
    //初始化变体
    VariantInit(&varLoadVariant);
    //路径字符串转换为变体
    varLoadVariant = StringToVariant(bsPath);//关键的一步,Load
    VARIANT_BOOL bResult;
    if(m_pXmlDomDocument->load(varLoadVariant, &bResult) == S_OK)
    {
            //Load成功,可以读取结点了
    }//释放字符串资源
    if(&varLoadVariant) 
    VariantClear(&varLoadVariant);这就是解析XML文档的初始化步骤,接下来你可以参看SDK的文档进行读写操作.
    你可以把xml文件看做树型结构,就行了.