天天看點

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;

}

轉載于:https://www.cnblogs.com/sea918/archive/2010/06/28/1766776.html