xml 解析库 msxml6.dll

xml 解析 无处不在,web编程时所用到的ajax  其它底层就是调用 的msxml.dll服务。

#include "stdafx.h"
#import "msxml6.dll"
using namespace MSXML2;

inline void TESTHR( HRESULT _hr )
   { if FAILED(_hr) throw(_hr); }

void XMLHttpRequestSample()
{
    MSXML2::IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL;
   BSTR bstrString = NULL;
   HRESULT hr;

   try {
           // init
        _bstr_t  bType="Content-Type: application/xml\r\n";
        _bstr_t  bAgent="Client-Agent:PVI_P801_V0.10/800*600/other\r\n";
        _bstr_t bCalling="x-up-calling-line-id:13466320945\r\n";
        _bstr_t bAction="Action:register\r\n";
        _bstr_t bAPI="APIVersion:1.0.0\r\n";
        _bstr_t bUser="User-Agent: Mozilla/4.0\r\n";
        _bstr_t bAccept="Accept:*/*\r\n";
        _bstr_t bCache="Cache-Control:no-cache\r\n";

        _variant_t varHeader =bType+bAgent+bCalling+bAction+bAPI+bUser+bAccept+bCache;

        _bstr_t varHost="http://localhost:81/book.xml"

      hr=pIXMLHTTPRequest.CreateInstance("Msxml2.XMLHTTP.6.0");
      SUCCEEDED(hr) ? 0 : throw hr;
      hr=pIXMLHTTPRequest->open("GET", varHost, false);
      SUCCEEDED(hr) ? 0 : throw hr;

      hr=pIXMLHTTPRequest->send(varHeader);
      SUCCEEDED(hr) ? 0 : throw hr;

      bstrString=pIXMLHTTPRequest->responseText;

     // MessageBox(NULL, _bstr_t(bstrString), _T("Results"), MB_OK);
      printf("**************************************************************************");
      printf(_bstr_t(bstrString));

      if(bstrString)
      {
         ::SysFreeString(bstrString);
         bstrString = NULL;
      }

   } catch (...) {
      MessageBox(NULL, _T("Exception occurred"), _T("Error"), MB_OK);
      if(bstrString)
         ::SysFreeString(bstrString);
   }
  // CoUninitialize();

}
void XMLDOMNodeSample()
{
    try {
        MSXML2::IXMLDOMDocumentPtr docPtr;
        MSXML2::IXMLDOMNodePtr DOMNodePtr;

        TESTHR(docPtr.CreateInstance("Msxml2.DOMDocument.6.0"));
        VARIANT vtTemp;

        vtTemp.vt=VT_I2;
            vtTemp.iVal = 1; //NODE_ELEMENT
        // load a document
        _variant_t varXml("D:\\ebook_host\\book.xml");
        _variant_t varOut((bool)TRUE);
        varOut = docPtr->load(varXml);
        if ((bool)varOut == FALSE)
            throw(0);
        MessageBox(NULL, _bstr_t(docPtr->xml), _T("Original Document"), MB_OK);       
        //DOMNodePtr = docPtr->createNode(vtTemp, "VIDEOS", "");    // 创建 新节点
        //docPtr->documentElement->appendChild(DOMNodePtr);  //添加 子节点
        //MessageBox(NULL, _bstr_t(docPtr->xml), _T("New Document"), MB_OK);

       MSXML2::IXMLDOMElementPtr pXMLDocElement = NULL;
       pXMLDocElement = docPtr->documentElement;
       MSXML2::IXMLDOMNodeListPtr pXMLDomNodeList = NULL;
       pXMLDomNodeList = pXMLDocElement->selectNodes("descendant::person[name='ab']");

        int count = 0;
        count = pXMLDomNodeList->length;     
        for(int i=0;i<pXMLDomNodeList->length;i++)
        {           
          DOMNodePtr=pXMLDomNodeList->Getitem(i);
         if(DOMNodePtr!=NULL)
         {
             MessageBox(NULL, _bstr_t(DOMNodePtr->Gettext()), _T("New Document"), MB_OK);
         }
        }

    } catch(...)
    {
        MessageBox(NULL, _T("Exception occurred"), _T("Error"), MB_OK);
    }
}
int main()
{
    // init
    TESTHR(CoInitialize(NULL));
      XMLHttpRequestSample();
      XMLDOMNodeSample();
    CoUninitialize();
    return 0;
}

你可能感兴趣的:(xml)