我的xml文档如下:
<IOVar>
- <ID>
<VarName>m_tmpwahaha</VarName>
<VarType>CString</VarType>
</ID>
- <ID>
<VarName>m_hehe</VarName>
<VarType>int</VarType>
</ID>
</IOVar>
其中ID的数目是不确定的,想要得到各个ID下VarName中的变量名,即m_tmpwahaha,m_hehe,...把他们放到一个数组m_ChoseVarList中。
我的相应部分代码:
MSXML2::IXMLDOMNodePtr pCurrentNode = NULL;
MSXML2::IXMLDOMNodePtr pNode = NULL; //new node,
MSXML2::IXMLDOMNodePtr pNodeIO = NULL; //new node,
MSXML2::IXMLDOMNodePtr pNodeIOName = NULL; //new node, CString strIOVar("IOVar");
_bstr_t bstrIOVar;
bstrIOVar = strIOVar.AllocSysString();
pNodeIO=m_plDomDocument->selectSingleNode(bstrIOVar);
int j=pNodeIO->childNodes->length;//得到长度,也就是有几个ID
//但是之后我用下面的方法就不行了
for( int i=0;i<j;i++)
{
CString strIOVarNam("IOVar//ID//VarName");
_bstr_t bstrIOVarName;
bstrIOVarName = strIOVarName.AllocSysString();
pNodeIOName=m_plDomDocument->selectSingleNode(bstrIOVarName);//得到VarName节点
IOVarName=pNodeIOName->text;//得到VarName的值
SIOVarName=(char*)(_bstr_t)IOVarName;
m_ChoseVarList->Add(SIOVarName);//将VarName的值添加到数组
}
显然,用这样的方式只能得到首个ID下的VarName的值,我记得在VB下可以用Item(i)的,但是我在VC下试了不好使,清高手指点!
<IOVar>
- <ID>
<VarName>m_tmpwahaha</VarName>
<VarType>CString</VarType>
</ID>
- <ID>
<VarName>m_hehe</VarName>
<VarType>int</VarType>
</ID>
</IOVar>
其中ID的数目是不确定的,想要得到各个ID下VarName中的变量名,即m_tmpwahaha,m_hehe,...把他们放到一个数组m_ChoseVarList中。
我的相应部分代码:
MSXML2::IXMLDOMNodePtr pCurrentNode = NULL;
MSXML2::IXMLDOMNodePtr pNode = NULL; //new node,
MSXML2::IXMLDOMNodePtr pNodeIO = NULL; //new node,
MSXML2::IXMLDOMNodePtr pNodeIOName = NULL; //new node, CString strIOVar("IOVar");
_bstr_t bstrIOVar;
bstrIOVar = strIOVar.AllocSysString();
pNodeIO=m_plDomDocument->selectSingleNode(bstrIOVar);
int j=pNodeIO->childNodes->length;//得到长度,也就是有几个ID
//但是之后我用下面的方法就不行了
for( int i=0;i<j;i++)
{
CString strIOVarNam("IOVar//ID//VarName");
_bstr_t bstrIOVarName;
bstrIOVarName = strIOVarName.AllocSysString();
pNodeIOName=m_plDomDocument->selectSingleNode(bstrIOVarName);//得到VarName节点
IOVarName=pNodeIOName->text;//得到VarName的值
SIOVarName=(char*)(_bstr_t)IOVarName;
m_ChoseVarList->Add(SIOVarName);//将VarName的值添加到数组
}
显然,用这样的方式只能得到首个ID下的VarName的值,我记得在VB下可以用Item(i)的,但是我在VC下试了不好使,清高手指点!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货