我打算将今后开发的软件的所长生的数据全部用XML格式来保存,但我对XML开发又是个新手,所以想知道WINDOWS下有什么XML开发包,我只要求能自动长生XML数据写入硬盘,以及能读入XML文件并能解析出其中的内容.

解决方案 »

  1.   

    #include <wchar.h>
    #import "msxml.dll"  
    using namespace MSXML;void SwitchLanguage(HWND hWnd,int nDlgID)
    {
    HKEY hKey;
    TCHAR szFileName[MAX_PATH];
            if(RegOpenKeyEx(HKEY_CURRENT_USER,_TEXT("SOFTWARE\\Internet Explorer Assistant"),NULL,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS){
            
    TCHAR szLang[MAX_LENGTH];

    DWORD dwType=REG_SZ;
    DWORD dwData=MAX_LENGTH;
    HRESULT hr=RegQueryValueEx(hKey,_T("Language"),0,&dwType,(BYTE*)szLang,&dwData);

        RegCloseKey(hKey);
    if(hr!=ERROR_SUCCESS||lstrlen(szLang)==0)strcpy(szLang,"English");
    strcpy(szFileName,g_szAppPath);
    lstrcat(szFileName,"Language\\");
    lstrcat(szFileName,szLang);
    lstrcat(szFileName,".xml");

    USES_CONVERSION;
    IXMLDOMDocumentPtr spXMLDOM(__uuidof(DOMDocument));
    try{    spXMLDOM->put_async(VARIANT_FALSE);

    // HRESULT hr=spXMLDOM->CoCreateInstance("Microsoft.XMLDOM");
    // spXMLDOM=spXmlNodePtr;
    VARIANT_BOOL bSuccess=false;
    bSuccess=spXMLDOM->load(CComVariant(szFileName));


    if(!bSuccess)throw "Can not load XML,Error ocured";
    IXMLDOMNodeListPtr spDOMNodeList=spXMLDOM->getElementsByTagName(_bstr_t("DIALOG"));

    IXMLDOMNodePtr NextNode;
    int nDlgCount=spDOMNodeList->Getlength();
                        CHAR szDlgID[20];
    wsprintf(szDlgID,"%d",nDlgID);
    for(int i=0;i<nDlgCount;i++){
    NextNode=spDOMNodeList->Getitem(i);
    IXMLDOMNamedNodeMapPtr pXMLDOMNamedNodeMap=NextNode->Getattributes();
    IXMLDOMNodePtr pXMLDOMNodePtr2=pXMLDOMNamedNodeMap->getNamedItem(_bstr_t("ID"));
    _bstr_t szID=pXMLDOMNodePtr2->GetnodeValue();

    if(stristrA(OLE2CT(szID),szDlgID)!=NULL){
    pXMLDOMNodePtr2=pXMLDOMNamedNodeMap->getNamedItem(_bstr_t("Caption"));
    _bstr_t szCaption=pXMLDOMNodePtr2->GetnodeValue();
    SetWindowText(hWnd,OLE2CT(szCaption));

    }

    }
    ////////////////////////
    spDOMNodeList=spXMLDOM->getElementsByTagName(_bstr_t("CTRL"));


    nDlgCount=spDOMNodeList->Getlength();
                       
    wsprintf(szDlgID,"%d",nDlgID);
    for( i=0;i<nDlgCount;i++){
    NextNode=spDOMNodeList->Getitem(i);
    IXMLDOMNamedNodeMapPtr pXMLDOMNamedNodeMap=NextNode->Getattributes();
    IXMLDOMNodePtr pXMLDOMNodePtr2=pXMLDOMNamedNodeMap->getNamedItem(_bstr_t("GROUP"));
    _bstr_t szGroup=pXMLDOMNodePtr2->GetnodeValue();

    if(stristrA(OLE2CT(szGroup),szDlgID)!=NULL){
    pXMLDOMNodePtr2=pXMLDOMNamedNodeMap->getNamedItem(_bstr_t("Caption"));
    _bstr_t szCaption=pXMLDOMNodePtr2->GetnodeValue();
    pXMLDOMNodePtr2=pXMLDOMNamedNodeMap->getNamedItem(_bstr_t("NO"));
    _bstr_t szCtrlID=pXMLDOMNodePtr2->GetnodeValue();
    SetDlgItemText(hWnd,_wtoi(szCtrlID),OLE2CT(szCaption));
    }

    }
    /////////////////////

    }
    catch(char * lpErr){
    ::MessageBox(NULL,lpErr,"Parse XML Error",MB_OK|MB_ICONEXCLAMATION);


    }
    }
    }
      

  2.   

    安装MSXML4.0就可以进行开发了
    他的帮助文档很详细。
    其中有很多源代码
      

  3.   

    http://www.codeproject.com/soap/paramio.asp
      

  4.   

    小弟写了一个VC中操作XML文档的类
    有需要者mail:[email protected]
      

  5.   

    下列地址也有下载
    http://bbs.nju.edu.cn/showfile?name=1039765861DOM方式操作XML文档类.rar