VC下如何操作XML? 我打算将今后开发的软件的所长生的数据全部用XML格式来保存,但我对XML开发又是个新手,所以想知道WINDOWS下有什么XML开发包,我只要求能自动长生XML数据写入硬盘,以及能读入XML文件并能解析出其中的内容. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #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); } }} 安装MSXML4.0就可以进行开发了他的帮助文档很详细。其中有很多源代码 http://www.codeproject.com/soap/paramio.asp 小弟写了一个VC中操作XML文档的类有需要者mail:[email protected] 下列地址也有下载http://bbs.nju.edu.cn/showfile?name=1039765861DOM方式操作XML文档类.rar TB_DELETEBUTTON的值是多少? MVC CStdioFile 读档问题 欢迎大家就http://vcer.net提修改意见! csv文件读写中的问题 其他语言如何嵌入到VC中来用呢? 例如java 新人请教,基础vc问题 完全二叉树的问题,请教各路高手,熟悉二叉树性质的请进。 谁知道PTZ摄像头中PTZ是哪三个单词的缩写 谁有Visual C++数字图象处理的配套代码? 怎样做到:不显示comboBox的下拉框 如何实现模态对话框一出来就隐藏啊 如何获得ComboboxEX的当前所选的项?
#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);
}
}
}
他的帮助文档很详细。
其中有很多源代码
有需要者mail:[email protected]
http://bbs.nju.edu.cn/showfile?name=1039765861DOM方式操作XML文档类.rar