|
文件: |
config.rar |
大小: |
0KB |
下载: |
下载 | |
1、利用在解析XML文件时,首先在stdafx.h文件中,包含如下语句:
#import
编译工程,在Debug目录下生成,msxml4.tlh、msxml4.tli文件,然后注释掉 #import ,在Stdafx.h文件中包含如下语句。
#include
#include "msxml4.tlh"
using namespace MSXML2;
2、在app文件的InitInstance()函数中初始化com组件
if(!AfxOleInit())//初始化COM库
{
AfxMessageBox("OLE初始化出错!");
return FALSE;
}
3、下面是解析Config.xml文件的例子
TCHAR buf[_MAX_PATH];
GetModuleFileName(AfxGetApp()->m_hInstance, buf, _MAX_PATH);
TCHAR drive[_MAX_DRIVE];
TCHAR dir[_MAX_DIR];
TCHAR fname[_MAX_FNAME];
TCHAR ext[_MAX_EXT];
_tsplitpath( buf, drive, dir, fname, ext );
CString file = drive;
file += dir;
file += _T("config.xml");
MSXML2::IXMLDOMDocumentPtr pDoc;
try
{
_variant_t vr ;
CString strValue;
pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument));
pDoc->Putasync(VARIANT_FALSE);
VARIANT_BOOL vbRes = pDoc->load(_bstr_t(file));
if(vbRes == VARIANT_FALSE)
{
CString strMsg;
strMsg.Format(_T("打开配置文件'%s'失败."),file);
MessageBox(strMsg, _T("提示"), MB_OK|MB_ICONWARNING);
return ;
}
IXMLDOMElementPtr pNode;
pNode = pDoc->selectSingleNode(_bstr_t("/config/ADOCnn"));
IXMLDOMNodePtr pText = pNode->GetfirstChild();
vr = pText->GetnodeValue();
vr.ChangeType(VT_BSTR);
strValue = vr.bstrVal;
pNode = pDoc->selectSingleNode(_bstr_t("/config/ApplicationName"));
vr = pNode->getAttribute("appname");
vr.ChangeType(VT_BSTR);
strValue = vr.bstrVal;
pNode = pDoc->selectSingleNode(_bstr_t("/config/intro"));
IXMLDOMNodePtr p1 = pNode->GetfirstChild();
vr = p1->GetnodeValue();
vr.ChangeType(VT_BSTR);
strValue = vr.bstrVal;
pNode = pDoc->selectSingleNode(_T("/config/MsgServer"));
_variant_t vrSrvIp = pNode->getAttribute(_T("ServerIp"));
if (vrSrvIp.vt != VT_NULL)
{
vrSrvIp.ChangeType(VT_BSTR);
strValue = vrSrvIp.bstrVal;
}
_variant_t vrSrvPort = pNode->getAttribute(_T("ServerPort"));
if (vrSrvPort.vt != VT_NULL)
{
vrSrvPort.ChangeType(VT_BSTR);
strValue = vrSrvPort.bstrVal;
}
IXMLDOMNodeListPtr pPersonNodes = pNode->selectNodes("/config/person");
long size = pPersonNodes->length;
for (int i = 0; i < size; i++)
{
IXMLDOMNodePtr pPersonNode = pPersonNodes->item[i];
IXMLDOMNodePtr pNameNode = pPersonNode->selectSingleNode(_T("name"));
IXMLDOMNodePtr pText = pNameNode->GetfirstChild();
_variant_t vrPerson = pText->GetnodeValue();
pNameNode = pPersonNode->selectSingleNode(_T("age"));
pText = pNameNode->GetfirstChild();
_variant_t vrAge = pText->GetnodeValue();
}
}
catch(_com_error e)
{
e.Description();
}
阅读(993) | 评论(0) | 转发(0) |