IXMLDOMElement* pElement;已经正确得到pElement指针
IXMLDOMNode* rootnode;
pElement->QueryInterface(IID_IXMLDOMNode,(void**)&rootnode);已经包含了msxml.h msxml2.lib #import <msxml3.dll>

解决方案 »

  1.   

    pElement->QueryInterface(MSXML::IID_IXMLDOMNode,(void**)&rootnode);
      

  2.   

    MSXML::IID_IXMLDOMNode还是认不得.
      

  3.   

    const IID IID_IXMLDOMNode = {0x2933BF80,0x7B36,0x11d2,{0xB2,0x0E,0x00,0xC0,0x4F,0x98,0x3E,0x60}};
    get_childNodesget_length
      

  4.   

    给你我的代码
    ASSERT(pXMLDoc!=NULL);
    if (pos>0) {
    try{
    IXMLDOMElementPtr pXMLRootNode;
    pXMLRootNode = IXMLDOMElementPtr(pXMLDoc->selectSingleNode("root"));
    if(pXMLRootNode!=NULL){
    IXMLDOMNamedNodeMapPtr pAttrs = NULL; 
    IXMLDOMNodePtr pAttrItem = NULL;
    IXMLDOMNodeListPtr nodeList = pXMLRootNode->GetchildNodes();
    IXMLDOMNodePtr childNodePtr = NULL;
    DOMNodeType nodeType;
    long nCount = nodeList->length;
    if(nCount<=2){
    return XMLFORMATERROR;
    }
    long nCount_ = 0;
    CString strAttrName="";
    CString strAttrValue="";
    childNodePtr = nodeList->item[pos+1];
    if(childNodePtr!=NULL){
    childNodePtr->get_attributes(&pAttrs);
    pAttrs->get_length(&nCount_);
    nodeType = childNodePtr->nodeType;
    if(nodeType == NODE_ELEMENT)
    {
    for(int j=0;j<nCount_;j++){
    pAttrs->get_item(j,&pAttrItem);
    strAttrName  = (char*)(_bstr_t)pAttrItem->nodeName;
    if(strAttrName.Compare("BufferLen")==0){
    strAttrValue  = (char*)(_bstr_t)pAttrItem->nodeTypedValue;
    bufferLen = atoi(strAttrValue);
    _variant_t vBuffer;
    vBuffer =  childNodePtr->nodeTypedValue;
    for(long i=0;i<bufferLen;i++)
    {
    SafeArrayGetElement(vBuffer.parray,&i,pBuffer+i);
    }
    ::VariantClear(&vBuffer);
    break;
    }
    }
    }
    }
    else{
    return POSITIONNULL;
    } if(pAttrs!=NULL){
    pAttrs.Release();
    pAttrs = NULL; 
    }
    if(pAttrItem!=NULL){
    pAttrItem.Release();
    pAttrItem = NULL;
    }
    if(pAttrItem!=NULL){
    nodeList.Release();
    nodeList = NULL;
    }
    if(childNodePtr!=NULL){
    childNodePtr.Release();
    childNodePtr = NULL;
    }

    }
    pXMLRootNode.Release();
    pXMLRootNode = NULL;
    }
    catch (...) {
    return XMLNODESELECTFAILURE;
    }
    return 1;
    }
    else
    {
    return POSITIONNULL;
    }