用XmlDocument创建和保存XML数据

by 清泉 4. 六月 2011 16:32
通过XmlDocument加载XML数据到内存,很多时候仅仅是只读方式访问XML数据还不够,需要添加、修改、删除XML文档中的某些结点。通 过XmlDocument类可以方便地进行XML数据的修改,本节将介绍如何通过XmlDocument类修改XML结点的值。

通过XmlDocument类修改XML文档数据,通常需要以下几个主要步骤或其中几个步骤。

(1)获取一个包含XML文档数据的XmlDocument类对象,通常有两种方法来实现这个功能:

通过17.2.3节所介绍方法加载已有XML数据。

通过XmlDocument类的构造函数创建不包含任何结点的空对象,常用默认构造函数。

(2)通过XmlDocument类的ChildNodes和Item属性获取某个结点(XmlNode类型),通过XmlNode的Name、Value、InnerText等属性修改选中结点的数据。

(3)通过XmlDocument类的CreateElement()和CreateAttribute()方法,创建新的元素结点和属性结点,并 通过XmlNode的Name、Value、InnerText等属性设置新结点的属性。CreateElement()和 CreateAttribute()的常用定义如下。

CreateElement(string name):创建具有指定限定名的元素结点,其中name表示元素结点的限定名,返回XmlElement类型对象。

CreateAttribute(string name):创建具有指定限定名的属性结点,其中name表示属性结点的限定名,返回XmlAttribute类型对象。

(4)通过XmlDocument类的CreateXmlDeclaration()方法创建一个XML文档说明,并通过XmlDocument.AppendChild()方法添加到XML文档中。CreateXmlDeclaration()的定义如下。

CreateXmlDeclaration(string version, string encoding, string standalone):创建一          个具有指定版本和编码的XML文档说明。其中,version表示版本,encoding表示XML文档的编码格式,默认为utf- 8,standalone表示是否在XML声明上写出独立属性,可选yes或no。

(5)通过XmlDocument类的CreateComment()方法创建一个具有指定文本的XML注释,并通过XmlDocument.AppendChild()方法添加到XML文档中。

CreateComment(string data):创建包含指定文本的XML注释,其中data表示注释的文本内容。返回XmlComment类型对象。

(6)通过XmlDocument类的Save()方法保存一个XML文档数据到文件或数据流,它包含以下重载版本:

Save(Stream sr):将内存中的XML文档数据保存到指定的数据流,其中,sr表示一个特定的可以写入的数据流。

Save(string filename):将内存中的XML文档数据保存到指定的文件,其中,filename表示XML文件名。

Save(TextWriter tw):将内存中的XML文档数据保存到指定的文本数据写入器,其中,tw表示一个文本写入器对象。

Save(XmlWriter xw):将内存中的XML文档数据保存到指定的XML数据写入器,其中,xw表示一个XML数据写入器对象。

示例代码17-5是CreateUserList()的代码片段,首先,创建XmlDocument对象xmlDoc。然后,通过 CreateXXX()方法创建对应的结点和属性,并通过AppendXXX()方法添加属性和子元素。最后,通过Save()方法将XML数据保存到文 件C:\UserList.XML中。

示例代码17-5

  1. static void CreateUserList( )  
  2. {  
  3.     //创建XmlDocument对象xmlDoc  
  4.     XmlDocument xmlDoc = new XmlDocument( );  
  5.     //创建一个XML文档声明,并添加到文档  
  6.     XmlDeclaration declare = xmlDoc.CreateXmlDeclaration("1.0", "utf-8",  
  7.     "yes");  
  8.     xmlDoc.AppendChild(declare);  
  9.     //创建并添加UserList结点  
  10.     XmlElement userListEle = xmlDoc.CreateElement("UserList");  
  11.     xmlDoc.AppendChild(userListEle);  
  12.     //创建并添加Count属性  
  13.     XmlAttribute countAttr = xmlDoc.CreateAttribute("Count");  
  14.     countAttr.Value = "1";  
  15.     userListEle.Attributes.Append(countAttr);  
  16.     //创建并添加User结点  
  17.     XmlElement userEle = xmlDoc.CreateElement("User");  
  18.     userListEle.AppendChild(userEle);  
  19.     //创建并添加ID属性  
  20.     XmlAttribute idAttr = xmlDoc.CreateAttribute("ID");  
  21.     idAttr.Value = "001";  
  22.     userEle.Attributes.Append(idAttr);  
  23.     //创建并添加Name元素  
  24.     XmlElement nameEle = xmlDoc.CreateElement("Name");  
  25.     nameEle.InnerText = "李四";  
  26.     userEle.AppendChild(nameEle);  
  27.     //通过Save()方法保存数据到XML文件UserList.XML中  
  28.     xmlDoc.Save(@"C:\UserList.XML");  

方法CreateUserList()生成的UserList.XML文档内容如下所示。从中可见,通过XmlDocument.Save()方法保存的XML数据,会自动在文件中添加换行和制表符等空白,使得XML数据看起来整齐美观。

  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?> 
  2. <UserList Count="1"> 
  3.   <User ID="001"> 
  4.     <Name>李四</Name> 
  5.   </User> 
  6. </UserList>

Tags:

DotNet技术资料

添加评论



(将显示你的Gravatar头像)  

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading



Supidea.com 晨飞的梦 @ All Rights Reserved. Powered by BlogYi.NET ver:1.8.0.0. 苏ICP备09011404号

关于博主

kamau
抱着美好的理想背井离乡,这酸甜苦辣只能默默忍受。既然选择了路,就得风雨兼程……

Calendar

<<  二月 2012  >>
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

在日历中查看文章

最近的评论

Comment RSS

声明

      本博所发一切破解相关附件只作学习研究交流之用,严禁用于商业用途,请在下载24小时内删除。
      本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2009