有哪位高手有XML操作函数GetNamedItem的使用例子的原代码
以下语句有错吗,为甚么我每次到最后一句就出错呢
IXMLDOMNamedNodeMap *NodeMap;
IXMLDOMNode *Node;
Node=NodeMap->getNamedItem ("DLL_NAME");
CString buff1=Node->text.copy();

解决方案 »

  1.   

    IXMLDOMNode *pIXMLDOMNode = NULL;
    IXMLDOMNamedNodeMap *pIXMLDOMNamedNodeMap = NULL;
    BSTR bstrAttributeName = ::SysAllocString(_T("dateModified"));
    IXMLDOMElement *pIXMLDOMElement = NULL;
    IXMLDOMDocument *pIXMLDOMDocument = NULL;
    VARIANT varValue;try
    {
       // Create an instance of DOMDocument and initialize pIXMLDOMDocument.
       // Load/create an XML fragment.
       hr = pIXMLDOMDocument->get_documentElement(&pIXMLDOMElement);
       SUCCEEDED(hr) ? 0 : throw hr;   if(pIXMLDOMElement)
       {
          hr = pIXMLDOMElement->get_attributes(&pIXMLDOMNamedNodeMap);
          if(SUCCEEDED(hr) && pIXMLDOMNamedNodeMap)
          {
             hr = pIXMLDOMNamedNodeMap->getNamedItem(bstrAttributeName, &pIXMLDOMNode);
             if(SUCCEEDED(hr) && pIXMLDOMNode)
             {
                pIXMLDOMNode->get_nodeValue(&varValue);
                ::MessageBox(NULL, _bstr_t(varValue), _T("Item Value"), MB_OK);
                pIXMLDOMNode->Release();
                pIXMLDOMNode = NULL;
             }
             pIXMLDOMNamedNodeMap->Release();
             pIXMLDOMNamedNodeMap = NULL;
          }
          pIXMLDOMElement->Release();
          pIXMLDOMElement = NULL;
       }
       ::SysFreeString(bstrAttributeName);
       bstrAttributeName = NULL;
    }
    catch(...)
    {
       if(bstrAttributeName)
          ::SysFreeString(bstrAttributeName);
       if(pIXMLDOMElement)
          pIXMLDOMElement->Release();
       if(pIXMLDOMNamedNodeMap)
          pIXMLDOMNamedNodeMap->Release();
       if(pIXMLDOMNode)
          pIXMLDOMNode->Release();
       DisplayErrorToUser();
    }
    // Release pIXMLDOMDocument when finished with it.