首页 理论教育 C#编程新手手册:DOM处理技巧

C#编程新手手册:DOM处理技巧

时间:2023-10-22 理论教育 版权反馈
【摘要】:DOM是文档对象模型,能够将XML作为一组标准的对象来进行处理。当DOM处理XML文件时,XML文件的所有数据都会被放在内存中。在.NET框架类库中,定义了一系列处理DOM的类,其中最为常用的是XmlNode和XmlDocunment。假设有一个名为123.xml的文件,具体代码如下:可以使用下面的代码将上述XML文件的内容全部读入到内存中:在类XmlDocunment中,提供了查看和处理整个XML文档节点的方法。图14-17 处理后的文件“123.xml”当把XML文档放入到内存后,可以对节点进行删除处理。

C#编程新手手册:DOM处理技巧

DOM是文档对象模型,能够将XML作为一组标准的对象来进行处理。在System.Xml命名空间内,提供了XML文档、片断、节点或节点集的编程表示方式。当DOM处理XML文件时,XML文件的所有数据都会被放在内存中。在.NET框架类库中,定义了一系列处理DOM的类,其中最为常用的是XmlNode和XmlDocunment。

1.XmlNode和XmlDocunment基础

XmlDocunment类使用方法Load()将文档放入内存中。在方法Load中,包含了可以从不同格式中获取数据的重载方法。通过类XmlDocunment中的方法LoadXml(),可以从字符串中读取XML。假设有一个名为123.xml的文件,具体代码如下:

978-7-111-36370-5-Part03-239.jpg

可以使用下面的代码将上述XML文件的内容全部读入到内存中:

978-7-111-36370-5-Part03-240.jpg

在类XmlDocunment中,提供了查看和处理整个XML文档节点的方法。并且XmlDocunment和XmlNode实现了互动,提高了处理的效率。XmlDocunment和XmlNode可以通过方法和属性进行如下操作处理:

978-7-111-36370-5-Part03-241.jpg访问和修改DOM的特定节点。

978-7-111-36370-5-Part03-242.jpg检索除节点所包含信息外的所有节点。

当将XML读入内存时会自动调用节点,因为并不是所有的节点都是同一个类型,所以XML元素具有不同处理指令的规则和语法。为此,在读取各种数据时,将为每个节点分配一种节点类型,这个节点类型能够确定节点的特性和功能。节点的类型是由XmlNodeType所定义的。

2.使用ImportNode方法

XmlDocunment类中ImportNode方法的功能是,将节点从一个XmlDocunment对象复制到另一个XmlDocunment对象中。复制之后原文件的内容不会改变,在新文件中会增加一个新节点对象。

实例67:使用ImportNode方法实现复制指定XML文件

下面通过一个具体的实例来说明使用ImportNode()方法复制指定XML文件的过程。本实例保存在“光盘:\daima\14”文件夹内,项目名为copychuli。实例文件的功能是将指定节点的内容复制到文件“123.xml”中。实例文件的主要代码如下所示:

978-7-111-36370-5-Part03-243.jpg

上述代码的设计流程如下。

1)定义XmlDocument对象mm。(www.xing528.com)

2)然后使用LoadXml方法设置导入的节点信息。

3)定义XmlDocument对象属性nn,然后使用LoadXml()方法设置导入的节点信息。

4)定义XmlNode对象newNode,通过AppendChild()方法将导入元素添加到XML中。

5)通过调用对象mm的Save()方法,将导入数据存放在文件“123.xml”内。

执行后将把指定的节点元素内容复制到文件“123.xml”内,如图14-17所示。

978-7-111-36370-5-Part03-244.jpg

图14-17 处理后的文件“123.xml”

当把XML文档放入到内存后,可以对节点进行删除处理。或删除节点类型中的内容和值。在删除某个节点时,会同时删除这个节点的子节点。如果要删除文档内的多个节点,则可以使用RemoveAll()方法来删除节点和属性。

多学一招

C#中一般采用如下两种方法来删除节点的属性。

(1)从属性集合中删除

从属性集合中删除属性的具体步骤如下:

第一步,使用XmlAttributeCollectionmm=elem.Attributes获取各元素的属性集合。

第二步,使用Remove()删除指定的属性;使用RemoveAll()删除集合中所有的属性,并保留没有属性的元素;使用RemoveAt()删除指定索引号的属性。

(2)获取属性删除

获取属性删除是指,获取某元素或某集合中的属性,然后将此属性的节点删除。当使用RemoveAll()方法来删除节点和属性时,被它操作的节点属性值不能为空值,即使为空也要使赋值为Empty。如果要删除从XmlCharacterData继承的节点类型,可以使用DeleteData()方法来实现。DeleteData()方法可以在节点内删除某范围内的字符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈