我的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下试了不好使,清高手指点!