下面是一段我解析xml的代码,希望查出xml中某个名字的全部节点,但是每次的结果就是没有查到,请帮我看看,哪里出了问题:         HRESULT hr;
IXMLDOMDocument* pXMLDoc;
IXMLDOMNode* pXDN;
IXMLDOMNodeList * pXDNList; hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);
    
hr=CoCreateInstance(CLSID_DOMDocument,NULL,CLSCTX_INPROC_SERVER,
 IID_IXMLDOMDocument,(void**) &pXMLDoc); 
    
VARIANT_BOOL bSuccess = false;
unsigned short *xmlStr = new unsigned short[409600];
xmlStr = L"<?xml version=\"1.0\" encoding=\"UTF-16\"?><root><file><time>2003-10-13</time><time>2004-10-13</time><time>2005-10-13</time><content>内容</content><title>标题</title></file></root>";
pXMLDoc->loadXML(xmlStr,&bSuccess);

LPWCH tempxml; pXMLDoc->selectNodes(L"time",(IXMLDOMNodeList **)&pXDNList);
long nodeCnt;
char *ch = new char[20];
IXMLDOMNode * tmpNode;
pXDNList->get_length(&nodeCnt);
for(int i=0;i<nodeCnt;i++)
{
pXDNList->get_item(i,(IXMLDOMNode **)&tmpNode);
tmpNode->get_text(&tempxml);
MessageBox(tempxml,L"",MB_OK);
} CoUninitialize();每次执行,nodecnt都是0,哪位可以帮我解决以下

解决方案 »

  1.   

    ...
    ..LoacXml()pXDN = pXMLDoc->GetdocumentElement().Detach();
    pXDN = pXDN->selectSingleNode( _T("file")).Detach();long nodeCnt;nodeCnt = pXDN->GetchildNodes()->Getlength();
    pXDNList = pXDN->selectNodes( _T("time")).Detach();
    nodeCnt = pXDNList->GetLength(); for(...)
      

  2.   

    这句错了 pXMLDoc->selectNodes(L"time",(IXMLDOMNodeList **)&pXDNList);
    应改为形如:
    pXMLDoc->selectNodes(L"//root/file/*",(IXMLDOMNodeList **)&pXDNList);
    另外你对xmlStr赋值也有问题,可改为
    wchar_t xmlStr[] = L"<?xml version=\"1.0\" encoding=\"UTF-16\"?><root><file><time>2003-10-13</time><time>2004-10-13</time><time>2005-10-13</time><content>内容</content><title>标题</title></file></root>";