找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1177|回复: 1

[精彩文萃] 使用MsXML存取XML

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-1-4 20:29:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
使用MsXML存取XML(1)
微软已经给我们提供了一个XML语法解析器,即Microsoft XML Core Services(MsXML)。MsXML实际上是一个COM(Component Object Model)对象库,它里面封装了进行XML解析时所需要的所有对象。因为COM是一种以二进制格式出现和语言无关的可重用对象,所以我们可以用任何语言(例如VB、VC、DELPHI、C++ Builder甚至脚本语言)对其进行调用。
MsXML所包括的主要COM接口如下所示。
IDOMDocument:IDOMDocument对象是XML DOM的基础,你可以利用它的属性和方法来浏览、查询和修改XML文档的内容和结构。IDOMDocument表示了树的顶层节点,它实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到和创建。
IXMLDOMNode:IXMLDOMNode是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其他的文档部分都可以认为是IXMLDOMNode。事实上,IDOMDocument对象本身也是一个IXMLDOMNode对象。
IXMLDOMNodeList:IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过"for"循环来遍历所有的节点。
IXMLDOMParseError:IXMLDOMParseError接口用来返回在解析过程中所出现的详细的信息,包括错误号、行号、字符位置和文本描述。
IDOMDocument代表XML文档对象,它提供了如表6-16所示的重要方法。
表6-16  IDOMDocument方法列表
方法
含义
load
读取指定位置的XML源
loadXML
读取给定的XML字符串
save
将当前的DOM对象树保存至指定位置的XML文件中
IDOMDocument同时继承于IXMLDOMNode接口,IXMLDOMNode提供了针对节点的操作函数,如表6-17所示。
表6-17  IXMLDOMNode属性列表
方法
含义
attributes
获取该节点的所有属性
childNodes
获取该节点的所有子节点
firstChild
获取该节点的第一个子节点
lastChild
获取该节点的最后一个子节点
nextSibling
获取该节点的下一个兄弟节点
nodeName
获取该节点的名字
(续表)
方法
含义
nodeValue
获取该节点的值
ownerDocument
获取该节点所属的文档
parentNode
获取该节点的父节点
previousSibling
获取该节点的上一个兄弟节点
text*
获取包含子节点的文本
xml*
获取包含子节点的XML文本
此外,IXMLDOMNode还提供一些操作方法,如增加、删除子节点等,如表6-18所示。
表6-18  IXMLDOMNode方法列表
方法
含义
appendChild
添加一个子节点
cloneNode
复制成一个新节点
hasChildNodes
是否包含子节点
insertBefore
添加一个子节点至指定节点之前
removeChild
删除指定的子节点
replaceChild
替换指定的子节点
selectNodes*
查找指定路径的节点列表
selectSingleNode*
查找指定路径的第一个节点
我们读取一个XML的流程一般如下所示:
创建一个IDOMDocument对象。
调用load()或者loadXML()方法加载XML源。
调用selectNodes()或者selectSingleNode()函数,选取指定的节点对象。
通过IXMLDOMNode对象的属性和方法读取节点对象的内容。
相反,如果要回写一个XML,则其流程则如下所示:
创建一个IDOMDocument对象。
如果需要修改已有的XML文件,调用load()或者loadXML()方法加载XML源,否则创建新的节点对象。
通过IXMLDOMNode对象的属性和方法设置节点对象的内容。
调用save()保存XML文件。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-4 21:18:18 | 显示全部楼层
补充一全面的
http://www.w3school.com.cn/xmldom/index.asp




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 05:18 , Processed in 0.433550 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表