C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)

摘要:
˃123如果执行此函数,将找到节点:13,XmlNodeListXmlDocument.SelectNodes此函数用于使用已声明并已成功加载配置文件的XmlDocument对象调用SelectNodes函数;此函数的参数是配置文件中所需节点的名称,从根节点名称到所需节点名称。整个名称路径不能错误。注意左斜线;由于节点的名称可能重复,因此函数的返回值是找到的所有XmlNode节点对象的XmlNodeList。如果找不到它,它将返回null。

XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀。XML文档主要由元素节点和节点的属性共同构成的。它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子子节点;每一个节点有开始就一定会有结束,不可能出现有开始无结束的节点,节点主要有两种类型:有InnerText的<city>……</city>和没有InnerText的<city……/>。在节点中含有属性,一个节点可以含有多个属性,每个属性是由名字和值共同构成的。

在XML文档中,节点、属性都是区分大小写的。对于某个节点的属性,Name是不能重复的,即使在定义属性的时候,定义了两个name完全相同的属性,添加到同一个节点上面,后面的属性会把前面的属性覆盖,不会报语法错误;对于某个节点下面的子节点,则可以添加多个完全相同的子节点。

       对XML文档的操作的前提是:XML文档已经存在,并且根节点已经存在。

13.1、添加节点和属性

1、定义一个XML的操作对象:

XmlDocument doc = new XmlDocument();

2、加载一个XML文件:

doc.Load(@"D:App.config");

指定的文件一定要存在,否则会报错的。

3、获取根节点:

XmlNode root = doc.DocumentElement;

4、定义一个属性:

XmlAttribute ra = doc.CreateAttribute("Name");

5、给属性的值赋值:

ra.Value = "zwj2";

6、将属性添加到节点上面:

root.Attributes.Append(ra);

7、再定义一个节点为根节点的子节点:

XmlNode root1 = doc.CreateElement("table");

8、给节点赋文本值:

root1.InnerText = "sdf1";

9、给节点定义并添加属性

10、将该节点添加到父节点上去:

root.AppendChild(root1);

11、保存XML文档:

doc.Save(@"D:App.config");

注意:可以对一个节点添加多个属性,那么各个属性会依次往后排;可以给根节点添加多个子节点,也可以对子节点再添加多个子节点。

13.2、查询和修改节点和属性

1、元素结点有Name属性,就是<>里面的串,也有InnerText属性(相当于文本结点),就是<></>之间的串:root.Name、root.InnerText。这些属性都是可以读写的。------------------------------XmlNode

2、属性结点有Name,也有Value:providerName="System.Data.SqlClient",前面为Name,后面为Value这些属性既可读也可写。-----------------------------------------------------------XmlAttribute

3、每一个结点有子结点的集合,也有属性的集合:root.ChildNodes、root.Attributes;集合都有count属性。

4、集合都满足索引:

对于属性集合,属性的name是不能重复的,所以索引可以是name字符串索引,那么name字符串要存在,否则返回的是一个null属性对象,不会报错;也可以是整数索引,那么此时的整数不能越界,否则是会报错的;:root.Attributes["name"]、root.Attributes[0],返回XmlAttribute。

对于子节点的集合,因为子节点可以完全相同,那么子节点的name肯定也可以相同,所以此时的索引只能是整数的,而不能是子节点name字符串,整数索引也不能越界,否则会报错: root.ChildNodes[10],返回XmlNode。

13.3、几个重要的函数

1、XmlNode XmlDocument.SelectSingleNode(@"configuration/twoNode/dayStart")

这个函数是用一个声明好的并且已经成功加载了某个配置文件的XmlDocument对象去调用SelectSingleNode函数;该函数的参数是配置文件中的从根节点名字开始一直往下最终到想要的节点的名字,整个名字路径都不能出错,注意是左斜杠;函数的返回值是第一次找到的XmlNode节点的对象,如果找不到就会返回null。

操作如下xml:

<?xmlversion="1.0"?>

<configuration>

  <twoNode>

  </twoNode>

  <twoNode>

    <dayStart>1</dayStart>

    <dayStart>2</dayStart>

    <dayStart>3</dayStart>

  </twoNode> 

</configuration>

如果执行该函数,那么将会找到节点:<dayStart>1</dayStart>

2、XmlNodeList XmlDocument.SelectNodes (@"configuration/twoNode/dayStart")

这个函数是用一个声明好的并且已经成功加载了某个配置文件的XmlDocument对象去调用SelectNodes函数;该函数的参数是配置文件中的从根节点名字开始一直往下最终到想要的节点的名字,整个名字路径都不能出错,注意是左斜杠;因为节点的名字是可能重复的,所以函数的返回值是找到的所有XmlNode节点对象的集合XmlNodeList,如果找不到就会返回null。

XmlNodeList是集合,那么就有count属性,可以直接对这个集合用[int index]来索引具体的对象,也可以用集合的Item(int index)函数来索引具体的对象,但是索引不能越界,否则会出错,返回的是XmlNode。

操作如下xml:

<?xmlversion="1.0"?>

<configuration>

  <twoNode>

    <dayStart>-1</dayStart>

    <dayStart>-2</dayStart>

    <dayStart>-3</dayStart>

  </twoNode>

  <twoNode>

    <dayStart>1</dayStart>

    <dayStart>2</dayStart>

    <dayStart>3</dayStart>

  </twoNode> 

</configuration>

如果执行该函数,那么将会找到节点集合:

    <dayStart>-1</dayStart>

    <dayStart>-2</dayStart>

<dayStart>-3</dayStart>

    <dayStart>1</dayStart>

    <dayStart>2</dayStart>

<dayStart>3</dayStart>

 

操作如下xml:

<?xmlversion="1.0"?>

<configuration>

  <twoNode>

  </twoNode>

  <twoNode>

    <dayStart>1</dayStart>

    <dayStart>2</dayStart>

    <dayStart>3</dayStart>

  </twoNode> 

</configuration>

如果执行该函数,那么将会找到节点集合:

    <dayStart>1</dayStart>

    <dayStart>2</dayStart>

    <dayStart>3</dayStart>

 

2009-04-05

 
 

免责声明:文章转载自《C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇float和double变量的内存布局~~~~~~Remix 搭建与简单使用,并支持外部访问下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下Mycat安装配置和使用

mysql安装下载mysql【百度云】tar -zxvf mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz 解压把mysql文件夹移动到 /usr/local/ 下mv mysql-5.6.32-linux-glibc2.5-x86_64 /usr/local/mysql创建mysql用户和组 groupadd mysql...

MySQL规约(阿里巴巴)

建表规约 【强制】表达是与否概念的字段,必须使用 is _ xxx 的方式命名,数据类型是 unsigned tinyint ( 1 表示是,0 表示否 ) ,此规则同样适用于 odps 建表。说明:任何字段如果为非负数,必须是 unsigned 。 【强制】表名、字段名必须使用小写字母或数字 ; 禁止出现数字开头,禁止两个下划线中间只 出现数字。数...

C# XML序列化/反序列化类XmlSerializer使用示例

using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; namespace ConsoleApplication1 { class Program { static void Ma...

B树和B+树

1.磁盘原理   当磁盘需要读取某个地址数据的时候,首先会判断数据在哪个盘片上,确定好盘片之后呢,就开始选道,选道的过程就是通过伸展机械臂到数据对应的磁道(也就是圆环),再通过磁盘的旋转,找到对应的扇区,最后用磁头读取这几个扇区的数据到内存中去,因此可以看到读取磁盘数据是非常的耗时耗力的,尤其这里是机械操作。 因此如果用BST的方式在磁盘上存取数据,就会存...

mysql回表

回表的概念 先得出结论,根据下面的实验。如果我要获得['liu','25']这条记录。需要什么步骤。 1.先通过['liu']记录对应到普通索引index(name),获取到主键id:4. 2.再通过clustered index,定位到行记录。也就是上面说的这条['liu','25']记录数据。 因此,上述就是说的回表查询,先定位主键值,再定位行记录...

sqlserver 索引

什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。 同理,SQL Server允许用户在表中创建索引,指定按某列预...