惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
小众软件
小众软件
S
SegmentFault 最新的问题
GbyAI
GbyAI
量子位
爱范儿
爱范儿
L
LangChain Blog
Vercel News
Vercel News
A
About on SuperTechFans
腾讯CDC
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
V
Visual Studio Blog
美团技术团队
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium

博客园 - 酸辣大白菜

排序算法 终结版 (C#) --数据结构 做人学会说NO,写程序学会说NULL。----------设计模式 用于主题检测的临时日志(bf1783d2-27ab-4079-a1c6-08a661824368 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) windows mobile网络设备 ------------- DMProcessConfigXML android 系统配置 常用命令 - linux qt 信号与槽机制 用于主题检测的临时日志(b9c62a98-6395-4fa6-b30d-70521beaf329 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 无绳电话系统 C++ 数据类型转换 关于内存泄漏检测 发布一个边看电子书边听英语的小工具 C++ 工厂模式 IE 8 与vs2005的兼容性问题 c++ vector用法 关于msxml.dll 音频驱动的3种模式 download WM6.5.3 SDK about CreateFileMapping on wince about MarshalledBuffer
xml 解析库 msxml6.dll
酸辣大白菜 · 2010-06-28 · via 博客园 - 酸辣大白菜

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;
}