在Windows Mobile下使用MSXML

首先是头文件:

#include <msxml.h>

初始化 COM 环境:

hr = CoInitializeEx(NULL, 0);

创建一个 XML DOM 对象:

IXMLDOMDocument *pDOM = NULL;
hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IID_IXMLDOMDocument, (LPVOID*)&pDOM);

然后就是加载XML的内容,加载有两种方式,从文件加载和从字符串加载:

// 从文件加载
VARIANT vt;
VARIANT_BOOL fSuccess;
vt.vt = VT_BSTR;
vt.bstrVal = SysAllocString(szPath);
hr = pDOM->load(vt, &fSuccess);
// 从字符串加载,第一个参数的类型是 BSTR,不过 LPWSTR 也没关系
// 如果项目的预处理器没有设置 UNICODE 之类的东西,就用 char* 吧
LPWSTR xmlSource = TEXT(“<Root/>”)
hr = pDOM->loadXML(xmlSource, &fSuccess);

得到 DOM 对象后,可以直接创建新的元素、节点;也可以从根节点开始遍历;也可以选择自己想要的节点直接进行处理。

选择根节点:

IXMLDOMElement* pRoot  = NULL;
hr = pDom->get_documentElement(&pRoot);

从根节点开始遍历需要用到 IXMLDOMNodeList 接口:

IXMLDOMNodeList* pNodeList = NULL;
hr = pRoot->get_childNodes(&pNodeList);
IXMLDOMNode*  pNode = NULL;
hr = pNodeList->nextNode(&pNode); // 注意这个返回值,你可以不管它,但不要用 hr != S_OK 判断
while( pNode != NULL )
{
  // 干你想干的任何事,然后得到下一个节点
  hr = pNodeList->nextNode(&pNode); /
}

从 IXMLDOMNodeList 中只能得到 IXMLDOMNode 接口,如果需要其它接口的操作,需要作点手脚。

1.接口查询,在你你确切知道这个节点的类型的时候比较有用

IXMLDOMElement* pElement = NULL;
hr = pNode->QueryInterface(IID_IXMLDOMElement, (void **)&pElement);

时间: 2024-08-03 20:46:37

在Windows Mobile下使用MSXML的相关文章

Wince和Windows Mobile下native C++的单元测试

单元测试(Unit Test)已经成为开发过程中不可分割的一部分,也是refactoring的基础,在Wince和Windows Mobile开发native C++时可以使用CppUnitLite进行单元测试. 在其他平台开发C++的时候,我一直使用CppUnit进行单元测试,可是CppUnit不支持Wince平台,因此在Wince下选择CppUnitLite进行单元测试.CppUnitLite是CppUnit的作者Michael Feathers重新开发的针对C++的单元测试框架.其开发目的

Windows Mobile下Native C++访问SqlCe的封装

背景 进行Windows Mobile的应用的开发,很多时候需要对数据库进行访问,存储和读取.可是微软没有为Native C++提供象ADO.NET下的封装,所以我自己封装了一个SqlCe访问类. 简述 本文讲述在Windows Mobile和Wince下,Native C++访问SqlCe的封装类的实现.由于微软没有为C++提供像ADO.NET的封装,为Native C++访问SqlCe制造了一定的难度,因此对OleDB访问SqlCe进行封装,方便使用SQL语句对SqlCe进行操作. SqlC

Windows Mobile下快速截屏的一种方法

    WinCE下截屏的方法有很多种,这里介绍一种利用GAPI实现的方法.GAPI是Game API的缩写,它提供了一系列函数,可以直接对屏幕缓冲区进行读/写访问.虽然现在逐渐被DirectX Mobile取代,但自从2000年首次应用在PPC上后,几乎所有的移动设备上都能看见它.GAPI主要应用于游戏开发,但也不仅限于此.下面就介绍一种在WM下如何利用GAPI快速截取屏幕的方法.  1      struct { 2           BITMAPINFOHEADER bmih; 3   

Windows Mobile下使用HTML控件

  在某些特殊的应用场合,我们很想要一个类似IE功能的模块,定制自己的功能. HTML控件现在向我们张开了怀抱.稍稍奇怪的是,它并不完全支持WAP协议.看来,IE还是做了自己的解析. 首先,我们要注册一下控件.把Htmlctrl.h包含进来,调用InitHTMLControl()函数,里面的参数为应用程序句柄.以下代码在MFC中使用: VERIFY(InitHTMLControl(AfxGetInstanceHandle())); DWORD dwStyle = WS_CHILD | WS_VI

Windows mobile下,pocket PC 和 PC上BS系统的文件传输!

问题描述 我们现在有一个系统是BS架构的,现在想把上面的数据转成文件并传输到PocketPC上,不知道用什么方法可以做,还有就是反过来,把PocketPc上的文件反传到PC上,让BS系统去读,这怎么做啊,请各位帮忙,谢谢! 解决方案 解决方案二:该回复于2007-12-04 11:17:31被版主删除

Windows mobile多国语言实现

介绍一种多国语言的实现办法,这也是微软推荐的方式,打开windows mobile下的windows目录可以看到有很多以MUI为后缀名的文件,例如shellres.dll.0804.mui. shell.dll.0804.mui......我们可以用eXeScope.exe或者resources hacker这样的文件查看器查看一下这些文件究竟是怎么一回事,不难发现文件里面都是一些资源ID和相对应的字符串.也许你就疑惑这是为什么呢?这些文件有什么作用呢?下面分解. MUI是Multilingua

Windows Mobile 消息钩子(1)

    在Windows中,设置键盘钩子很多人都做过,但是在windows Mobile系统中并没有直接的函数支持.但是我们可以通过使用undocument api来实现. 一.定义参数 #define WH_KEYBOARD_LL           20  #define HC_ACTION        0  typedef LRESULT(CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);  typedef HHOOK

艾伟_转载:Windows Mobile开发,Native C++ PK .NET Compact Framework

缘由 经常听到一些刚刚接触Windows Embedded CE和Windows Mobile开发的人会提出一些疑问.进行Windows Mobile开发,到底使用什么语言呢?C++还是C#?Java行不行?下面就我自己的想法讲述一下Native C++ 和 .NET Compact Framework的异同和选择.   什么是Native Native翻译成原生,Native是使用C,C++或者汇编等语言代码编写的,编译成处理器相关的binary文件(执行文件,DLL等可执行文件), 关于可执

Windows Mobile 6.5中使用手势

这个语言参考部分包含了对触摸事件.手势.以及手势动画等编程元素的描述. 触摸API分为两个部分,管理触摸输入的手势API,和控制显示区域如何对用户触摸作出反应的手势物理引擎API. 触摸函数.消息.以及结构体是与鼠标共享的,因为应用程序像处理鼠标左键单击一样处理手写笔事件.想了解其他触摸参考信息,请转到鼠标参考. 索引 触摸手势 介绍窗口触摸,并讨论如何在你的应用程序中实现触摸接口. 手势参考(DTK) 这个API允许你的程序监视触摸输入并对触摸输入进行编程. 物理引擎概览 介绍了物理引擎,以及