聊天服务器——Xml

avatar
作者
猴君
阅读量:3

Xml(基于.COM)

组件化解决的问题是拿来就用,不需要太多的额外编译,就能够进行适配

仅仅引用头文件,加上一个可运行的程序,就可以到处使用,随时引用

甚至不要头文件,直接拿来用

COM里面有接口规范,可以通过接口查询方法

本地COM服务,COM控件需要先注册后使用(dll库、ocx库)。这是微服务器,当创建对象时,它帮你创建,COM控件需要通过它来管理

MSXML对应的头文件是<msxml2.h>

IXMLDOMNODE

IXMLDOMNode是文档对象模型(DOM)中的基本的对象,元素,属性,注释,过程指令和其他的文档组件都可以认为是IXMLDOMNode。该对象有以下几个功能:

get_nodeName

get_nodeValue

put_nodeValue

get_nodeType

get_parentNode

get_childNodes

get_firstNodes

get_lastChild

get_attributes

get_previousSibling 拿到前一个兄弟节点

get_nextSibling 拿到下一个兄弟节点

removeChild

appendChild

replaceChild

hasChildNodes

cloneNode

get_ownerDocument

get_text

put_text

get_dataType

put_dataType

transformNode

SelectNodes

get_parsed 获取解析状态

IXMLDOMNodeList

IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来。集合有以下几个功能

get_item

get_length

nextNode

reset

get__newEnum

IXMLDOMDocument2

全局统筹管理,相当于一个环境。 在创建xml时,必须指定一个Document

get_namespaces

get_schemas

setProperty

getProperty

Loadxml

interface接口

MsXml2.h里有#include ”rpc.h“,这是远程调用文件,因为是基于.COM

里有interface接口,因为是基于.COM的

封装代码

#pragma once

告诉编译器只编译一次,头文件里,不能定义全局变量(除非加extern)和实现静态成员变量

#import ”msxml3.dll“ //导入库,COM专用

#if defined(UNICODE) || defined(_UNICODE0)

#else

#endif

用上面这种方式来编译不同的版本。

class CXmlNodeList ; //因为Node里需要用到NodeList,但是NodeList还没定义好,所以需要预

//定义一下

class CXmlNode{};

class CXmlNodeList{};

格式说明

<faceconfig>

</faceconfig>

这样表示一个节点

使用示例

void xmlTest()

{

CoInitialize(NULL); //COM 初始化

CXmlDocument doc;

Bool ret = doc.Load(_T("FaceConfig.xml"));

ret = doc.SelectSingleNode(_T("/faceconfig"), root);

ret = root.GetFirstChildNode(_T("face"), face);

while(ret)

{

......

ret = face.GetNextSiblingNode(face);

}

face.Release();

root.Release();

doc.Release();

CoUninitialize();

}

SelectSingleNode()

/表示从根节点去查找

//表示当前节点下的任意节点

. 表示当前节点

.. 表示父节点

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!