一个vc中使用msxml的问题
发布网友
发布时间:2022-04-26 21:30
我来回答
共2个回答
热心网友
时间:2023-11-27 03:20
第一步,在stdafx.h加入2句:
#import <msxml3.dll> //导入动态库,装了IE5就有
using namespace MSXML2; //引用命名空间,
第二步:声明文档变量
MSXML2::IXMLDOMDocumentPtr pTestDomDocument;//故障参数文件
第三步:然后在代码中就可以使用
void CQuickTestView::GetPeiTable(int sendtype,char* buf)
{
::CoInitialize(NULL);
pDRTDomDocument.CreateInstance(__uuidof(DOMDocument30));//创建XML文档实例
MSXML2::IXMLDOMProcessingInstructionPtr pPI=NULL;
//创建处理指令
pDRTDomDocument->raw_createProcessingInstruction(_bstr_t(L"xml"),_bstr_t(L"version='1.0' encoding='utf-8'"),&pPI);
pDRTDomDocument->appendChild(pPI);
//创建根目录
MSXML2::IXMLDOMElementPtr pDRTDocRoot;
pDRTDocRoot = pDRTDomDocument->createElement((_bstr_t)"DRT");
pDRTDomDocument->appendChild(pDRTDocRoot);
MSXML2::IXMLDOMElementPtr pNode;
MSXML2::IXMLDOMElementPtr pChildNode;
MSXML2::IXMLDOMElementPtr pGrandChildNode;
CString str;
int smv_index = 32;
int goose_send_index = 32;
int goose_recv_index = 32;
int do_index = 0;
int di_index = 0;
int i = 0;
if(scfg.hd.smvst.uSmv_num > 0)
{
pNode = pDRTDomDocument->createElement((_bstr_t)"SMV_SEND");//创建根元素的一级子元素"SMV_SEND"
AppendChildToParent(pNode,pDRTDocRoot,1,FALSE);//添加根元素的一级子元素"SMV_SEND"
for(i = 0; i < scfg.hd.smvst.uSmv_num; i++)//创建"SMV"子元素
{
pChildNode = pDRTDomDocument->createElement((_bstr_t)"SMV");
str.Format("%d",scfg.hd.smvst.sSmvData[i].PortId);
pChildNode->setAttribute("ethId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].sample_rate);
pChildNode->setAttribute("rate",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uASDUnum);
pChildNode->setAttribute("asNum",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uSmvStyle);
pChildNode->setAttribute("protocol",(_bstr_t)str);
str.Format("%002x-%002x-%002x-%002x-%002x-%002x",scfg.hd.smvst.sSmvData[i].uDest_mac[0],scfg.hd.smvst.sSmvData[i].uDest_mac[1],\
scfg.hd.smvst.sSmvData[i].uDest_mac[2],scfg.hd.smvst.sSmvData[i].uDest_mac[3],\
scfg.hd.smvst.sSmvData[i].uDest_mac[4],scfg.hd.smvst.sSmvData[i].uDest_mac[5]);
pChildNode->setAttribute("mac",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uApp_id);
pChildNode->setAttribute("appId",(_bstr_t)str);
str.Format("%s",scfg.hd.smvst.sSmvData[i].cSVID);
pChildNode->setAttribute("svId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uVlan_id);
pChildNode->setAttribute("vlanId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uPriority);
pChildNode->setAttribute("priority",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uAcessNum);
pChildNode->setAttribute("channelCount",(_bstr_t)str);
if(i < scfg.hd.smvst.uSmv_num-1)
{
AppendChildToParent(pChildNode,pNode,2,FALSE);
}
else//如果是最后一个SMV配置
{
AppendChildToParent(pChildNode,pNode,2,TRUE);
}
for(int j = 0; j < scfg.hd.smvst.sSmvData[i].uAcessNum; j++)
{
pGrandChildNode = pDRTDomDocument->createElement((_bstr_t)"CHNL");
str.Format("%d",smv_index++);
pGrandChildNode->setAttribute("index",(_bstr_t)str);
//jixina081016 针对SMV增加品质因素 注意区分9-1和9-2的不同。
if(scfg.hd.smvst.sSmvData[i].uSmvStyle == 0)//如果为9-1,每组SMV共用一个状态字。
{
UINT itemp;
BYTE btemp[4];
btemp[0] = scfg.hd.smvst.sSmvData[i].typeeword[2];
btemp[1] = scfg.hd.smvst.sSmvData[i].typeeword[3];
btemp[2] = scfg.hd.smvst.sSmvData[i].typeeword[0];
btemp[3] = scfg.hd.smvst.sSmvData[i].typeeword[1];
memcpy(&itemp,btemp,4);
str.Format("%d",itemp);
pGrandChildNode->setAttribute("q",(_bstr_t)str);
}
if(scfg.hd.smvst.sSmvData[i].uSmvStyle == 1)//如果为9-2,每组SMV的每个通道分别对应一个品质因素。
{
str.Format("%d",scfg.hd.smvst.sSmvData[i].uQuality[j]);
pGrandChildNode->setAttribute("q",(_bstr_t)str);
}
if(j < scfg.hd.smvst.sSmvData[i].uAcessNum-1)//?????????
AppendChildToParent(pGrandChildNode,pChildNode,3,FALSE);
else
AppendChildToParent(pGrandChildNode,pChildNode,3,TRUE);
}
}
}
热心网友
时间:2023-11-27 03:20
请注册你的COM,方法"开始菜单"-"运行",然后输入
REGSVR32 x:\XXX\msxml4.dll
REGSVR32后面是msxml4.dll的路径
热心网友
时间:2023-11-05 02:22
第一步,在stdafx.h加入2句:
#import <msxml3.dll> //导入动态库,装了IE5就有
using namespace MSXML2; //引用命名空间,
第二步:声明文档变量
MSXML2::IXMLDOMDocumentPtr pTestDomDocument;//故障参数文件
第三步:然后在代码中就可以使用
void CQuickTestView::GetPeiTable(int sendtype,char* buf)
{
::CoInitialize(NULL);
pDRTDomDocument.CreateInstance(__uuidof(DOMDocument30));//创建XML文档实例
MSXML2::IXMLDOMProcessingInstructionPtr pPI=NULL;
//创建处理指令
pDRTDomDocument->raw_createProcessingInstruction(_bstr_t(L"xml"),_bstr_t(L"version='1.0' encoding='utf-8'"),&pPI);
pDRTDomDocument->appendChild(pPI);
//创建根目录
MSXML2::IXMLDOMElementPtr pDRTDocRoot;
pDRTDocRoot = pDRTDomDocument->createElement((_bstr_t)"DRT");
pDRTDomDocument->appendChild(pDRTDocRoot);
MSXML2::IXMLDOMElementPtr pNode;
MSXML2::IXMLDOMElementPtr pChildNode;
MSXML2::IXMLDOMElementPtr pGrandChildNode;
CString str;
int smv_index = 32;
int goose_send_index = 32;
int goose_recv_index = 32;
int do_index = 0;
int di_index = 0;
int i = 0;
if(scfg.hd.smvst.uSmv_num > 0)
{
pNode = pDRTDomDocument->createElement((_bstr_t)"SMV_SEND");//创建根元素的一级子元素"SMV_SEND"
AppendChildToParent(pNode,pDRTDocRoot,1,FALSE);//添加根元素的一级子元素"SMV_SEND"
for(i = 0; i < scfg.hd.smvst.uSmv_num; i++)//创建"SMV"子元素
{
pChildNode = pDRTDomDocument->createElement((_bstr_t)"SMV");
str.Format("%d",scfg.hd.smvst.sSmvData[i].PortId);
pChildNode->setAttribute("ethId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].sample_rate);
pChildNode->setAttribute("rate",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uASDUnum);
pChildNode->setAttribute("asNum",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uSmvStyle);
pChildNode->setAttribute("protocol",(_bstr_t)str);
str.Format("%002x-%002x-%002x-%002x-%002x-%002x",scfg.hd.smvst.sSmvData[i].uDest_mac[0],scfg.hd.smvst.sSmvData[i].uDest_mac[1],\
scfg.hd.smvst.sSmvData[i].uDest_mac[2],scfg.hd.smvst.sSmvData[i].uDest_mac[3],\
scfg.hd.smvst.sSmvData[i].uDest_mac[4],scfg.hd.smvst.sSmvData[i].uDest_mac[5]);
pChildNode->setAttribute("mac",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uApp_id);
pChildNode->setAttribute("appId",(_bstr_t)str);
str.Format("%s",scfg.hd.smvst.sSmvData[i].cSVID);
pChildNode->setAttribute("svId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uVlan_id);
pChildNode->setAttribute("vlanId",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uPriority);
pChildNode->setAttribute("priority",(_bstr_t)str);
str.Format("%d",scfg.hd.smvst.sSmvData[i].uAcessNum);
pChildNode->setAttribute("channelCount",(_bstr_t)str);
if(i < scfg.hd.smvst.uSmv_num-1)
{
AppendChildToParent(pChildNode,pNode,2,FALSE);
}
else//如果是最后一个SMV配置
{
AppendChildToParent(pChildNode,pNode,2,TRUE);
}
for(int j = 0; j < scfg.hd.smvst.sSmvData[i].uAcessNum; j++)
{
pGrandChildNode = pDRTDomDocument->createElement((_bstr_t)"CHNL");
str.Format("%d",smv_index++);
pGrandChildNode->setAttribute("index",(_bstr_t)str);
//jixina081016 针对SMV增加品质因素 注意区分9-1和9-2的不同。
if(scfg.hd.smvst.sSmvData[i].uSmvStyle == 0)//如果为9-1,每组SMV共用一个状态字。
{
UINT itemp;
BYTE btemp[4];
btemp[0] = scfg.hd.smvst.sSmvData[i].typeeword[2];
btemp[1] = scfg.hd.smvst.sSmvData[i].typeeword[3];
btemp[2] = scfg.hd.smvst.sSmvData[i].typeeword[0];
btemp[3] = scfg.hd.smvst.sSmvData[i].typeeword[1];
memcpy(&itemp,btemp,4);
str.Format("%d",itemp);
pGrandChildNode->setAttribute("q",(_bstr_t)str);
}
if(scfg.hd.smvst.sSmvData[i].uSmvStyle == 1)//如果为9-2,每组SMV的每个通道分别对应一个品质因素。
{
str.Format("%d",scfg.hd.smvst.sSmvData[i].uQuality[j]);
pGrandChildNode->setAttribute("q",(_bstr_t)str);
}
if(j < scfg.hd.smvst.sSmvData[i].uAcessNum-1)//?????????
AppendChildToParent(pGrandChildNode,pChildNode,3,FALSE);
else
AppendChildToParent(pGrandChildNode,pChildNode,3,TRUE);
}
}
}
热心网友
时间:2023-11-05 02:23
请注册你的COM,方法"开始菜单"-"运行",然后输入
REGSVR32 x:\XXX\msxml4.dll
REGSVR32后面是msxml4.dll的路径