c# xml读写 操作 实例.docx_第1页
c# xml读写 操作 实例.docx_第2页
c# xml读写 操作 实例.docx_第3页
c# xml读写 操作 实例.docx_第4页
c# xml读写 操作 实例.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c# xml读写 操作 实例 已知有一个XML文件(bookstore.xml)如下: Oberons Legacy Corets, Eva 5.951、往节点中插入一个节点: XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(bookstore.xml); XmlNode root=xmlDoc.SelectSingleNode(bookstore);/查找 XmlElement xe1=xmlDoc.CreateElement(book);/创建一个节点 xe1.SetAttribute(genre,李赞红);/设置该节点genre属性 xe1.SetAttribute(ISBN,2-3631-4);/设置该节点ISBN属性 XmlElement xesub1=xmlDoc.CreateElement(title); xesub1.InnerText=CS从入门到精通;/设置文本节点 xe1.AppendChild(xesub1);/添加到节点中 XmlElement xesub2=xmlDoc.CreateElement(author); xesub2.InnerText=候捷; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement(price); xesub3.InnerText=58.3; xe1.AppendChild(xesub3); root.AppendChild(xe1);/添加到节点中 xmlDoc.Save(bookstore.xml);/=结果为: Oberons Legacy Corets, Eva 5.95 CS从入门到精通 候捷 58.32、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。 XmlNodeList nodeList=xmlDoc.SelectSingleNode(bookstore).ChildNodes;/获取bookstore节点的所有子节点 foreach(XmlNode xn in nodeList)/遍历所有子节点 /其实还可以使用这样的形式来查找某个节点/*XmlDocument doc=new XmlDocument(); doc.LoadXml(xml文件位置); /找出根节点 XmlNode root=doc.SelectSingleNode(root); /查询a节点 root.SelectNodes(root/a); /查询cc节点 root.SelectNodes(/cc);/其中a节点是二级点,cc是a下的三级节点*/ XmlElement xe=(XmlElement)xn;/将子节点类型转换为XmlElement类型 if(xe.GetAttribute(genre)=李赞红)/如果genre属性值为“李赞红” xe.SetAttribute(genre,update李赞红);/则修改该属性为“update李赞红” XmlNodeList nls=xe.ChildNodes;/继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)/遍历 XmlElement xe2=(XmlElement)xn1;/转换类型 if(xe2.Name=author)/如果找到 xe2.InnerText=亚胜;/则修改 break;/找到退出来就可以了 break; xmlDoc.Save(bookstore.xml);/保存。/=最后结果为: Oberons Legacy Corets, Eva 5.95 CS从入门到精通 亚胜 58.33、删除 节点的genre属性,删除 节点。XmlNodeList xnl=xmlDoc.SelectSingleNode(bookstore).ChildNodes; foreach(XmlNode xn in xnl) XmlElement xe=(XmlElement)xn; if(xe.GetAttribute(genre)=fantasy) xe.RemoveAttribute(genre);/删除genre属性 else if(xe.GetAttribute(genre)=update李赞红) xe.RemoveAll();/删除该节点的全部内容 xmlDoc.Save(bookstore.xml);/=最后结果为: Oberons Legacy Corets, Eva 5.954、显示所有数据。 XmlNode xn=xmlDoc.SelectSingleNode(bookstore); XmlNodeList xnl=xn.ChildNodes; foreach(XmlNode xnf in xnl) XmlElement xe=(XmlElement)xnf; Console.WriteLine(xe.GetAttribute(genre);/显示属性值 Console.WriteLine(xe.GetAttribute(ISBN); XmlNodeList xnf1=xe.ChildNodes; foreach(XmlNode xn2 in xnf1) Console.WriteLine(xn2.InnerText);/显示子节点点文本 以上文章转自 /TrackBack.aspx?PostId=1630438本文将会涉及3个方面的内容: 1存取XML文件 2XML文档对象模型 3XML和DataSet 这里我们先介绍操作XML文件的两个对象:XmlTextReader和XmlTextWriter 打开和读取Xml文件使用到的对象就是XmlTextReader对象。下面的例子打开了与程序在同一路径下的一个例子文件sample.xmlXmlTextReader reader = new XmlTextReader(sample.xml); 然后我们可以通过其Read方法实现自动便利XML文件。例:while(reader.Read() /在这里填写对于XML的操作代码 下面我们看一个复杂一些的例子。while(reader.Read() switch(reader.NodeType) case XmlNodeType.Element: /当前节点是一个元素 Console.Write(); break; case XmlNodeType.DocumentType: /XML文件的类型声明 Console.WriteLine(reader.NodeType + + reader.Value); break; 从第3行开始我们就根据NodeType属性去判断节点的类型,根据节点的不同类型进行不同的处理。下表列出了一些常用的节点类型。XmlTextReader的NodeType的取值类型 说明All 所有节点Attribute 一个属性CDATA 转义那些会被看作标记语言(如HTML)的文本Comment 使用分隔的注释Document XML数据树的根节点DocumentType 文档的类型声明,即标记Element 一个元素,通常是XML文件中的实际数据EndTag 元素的结束位置None 不是节点 Text 返回元素的文本内容XMLDeclaration XML声明节点,例如在进行写入XML文件时我们使用的XmlTextWriter类,它是XmlWriter的子类,速度快且不使用缓存,但是同XmlTextReader一样,在写入XML文件时只能向前。我们假定要写入的XML文件在C盘根目录下:XmlTextWriter writer = new XmlTextWriter(C:sample2.xml,null);在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“Console.Out”作为参数传递给构造器,此时应把上述语句改为:XmlTextWriter writer = new XmlTextWriter(Console.Out);下面我们介绍一下写入XML文件数据的一些常用方法:XmlTextWriter的常用方法方法说明 用法WriteStartDocument写XML声明部分,即“” writer.WriteStartDocument();WriteEndDocument 使没有闭合元素闭合 writer.WriteEndDocument();WriteDocType写DOCTYPE声明 writer.WriteDocType(sample2,null,null,);WriteStartElement 写元素的开始标志 writer.WriteStartElement(sample2);WriteEndElement 写元素的结束标志 writer.WriteEndElement();WriteString 写入字符串 writer.WriteString(Pride And Prejudice);WriteCData写CDATA块,即写入的文字在间 writer.WriteCData(Price 15% off!);WriteRaw手工写入一行,不作任何处理 writer.WriteRaw(this & that);WriteEntityRef 写入实体引用,即前面加“&”后面加“;” writer.WriteEntityRef(h);WriteProcessingInstruction写入处理指令, writer.WriteProcessingInstruction(xml-stylesheet,PItext);即前面加“”WriteComment写入注释,自动加入注释标志“!-”和“” writer.WriteComment(sample XML);Flush 把缓存中的内容写入文件 writer.Flush();Close 关闭,如有未闭合的元素,自动闭合 writer.Close(); 其中WriteString方法会对字符串进行下述处理: 1.字符“&”、“”转化为“&”、“<”和“>”。 2.ASCII码为01F(十六进制)的字符转化为“”;单引号 “”转化为“'”。下面给大家写出一个例程,由于注释比较详细就不作过多解释了。using System;using System.IO;using System.Xml;public class Sample private const string filename = sampledata.xml; public static void Main() XmlTextWriter writer = null; writer = new XmlTextWriter (filename, null); /为使文件易读,使用缩进 writer.Formatting = Formatting.Indented; /写XML声明 writer.WriteStartDocument(); /引用样式 String PItext=type=text/xsl href=book.xsl; writer.WriteProcessingInstruction(xml-stylesheet, PItext); /Write the DocumentType node writer.WriteDocType(book, null , null, ); /写入注释 writer.WriteComment(sample XML); /写一个元素(根元素) writer.WriteStartElement(book); / genre 属性 writer.WriteAttributeString(genre, novel); / ISBN 属性 writer.WriteAttributeString(ISBN, 1-8630-014); /书名元素 writer.WriteElementString(title, The Handmaids Tale); /Write the style element writer.WriteStartElement(style); writer.WriteEntityRef(h); writer.WriteEndElement(); /价格元素 writer.WriteElementString(price, 19.95); /写入 CDATA writer.WriteCData(Prices 15% off!); /关闭根元素 writer.WriteEndElement(); writer.WriteEndDocum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论