C#操作XML代码整理
2010-10-13 12:06
351 查看
c#操作XML方法
using System.Xml; using System.IO; /// <summary> /// XMLProc 的摘要说明 /// 将数据写入XML文件的方法 /// SaveXML_DataSet()利用DataSet写入XML文件 /// SaveXML_XmlTextWriter()利用XmlTextWriter写入XML文件 /// SaveXML_XmlNode()利用XmlNode写入XML文件 /// /// 从XML文件中读取数据 /// GetXML_XmlTextReader() /// GetXML_XmlNodeReader() /// </summary> public class XMLProc { public XMLProc() { // // TODO: 在此处添加构造函数逻辑 // } ///<summary> /// 利用XmlTextWriter不容易实现追加,也就是说每次写入XML文档的数据都是覆盖式的,不容易实现在原有数据的基础上追加数据, /// 而采用XmlNode模式就能方便地实现数据追加 /// 利用DataSet也不是追加数据 ///</summary> //利用DataSet把数据写入XML文件,不实现追加 public static string SaveXML_DataSet(BaseInfo.Phonebook pb) { try { DataTable dt = new DataTable(); dt.Columns.Add("name", Type.GetType("System.String")); dt.Columns.Add("telphone", Type.GetType("System.String")); …… DataRow dr = dt.NewRow(); dr[0] = pb.name; dr[1] = pb.telphone; …… dt.Rows.Add(dr); System.Data.DataSet ds = new DataSet(); ds.Tables.Add(dt); //将DataSet里面的数据写入XML ds.WriteXml(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); return "true"; } catch(Exception ex) { return ex.ToString(); } } //利用xmlTextWriter往XML文件写入数据,没有实现追加 public static string SaveXMLData_XmlTextWriter(BaseInfo.Phonebook pb) { try { //创建一个XmlTextWriter类的实例对象 System.IO.FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); //if (!file.Exists) XmlTextWriter textWriter = new XmlTextWriter(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"), System.Text.Encoding.UTF8); //开始写过程,调用WriterStartDocument方法写入文件头信息 //例如<?xml version="1.0" encoding="utf-8"?> textWriter.WriteStartDocument(); //写入根节点<phonebook></phonebook> textWriter.WriteStartElement("phonebook"); textWriter.WriteStartElement("member"); //写入节点name textWriter.WriteStartElement("name", ""); //为name节点写入用户输入的值 textWriter.WriteString(pb.name); //写入name节点的结束符 textWriter.WriteEndElement(); textWriter.WriteStartElement("telphone", ""); textWriter.WriteString(pb.telphone); textWriter.WriteEndElement(); …… //写入文档结束,调用WriteEndDocument方法 textWriter.WriteEndDocument(); //关闭textWriter textWriter.Close(); return "true"; } catch (Exception ex) { return ex.ToString(); } } //利用XmlNode往XML文件写入数据,可以实现追加 public static string SaveXMLData_XmlNode(BaseInfo.Phonebook pb) { try { //创建一个XmlDocument 对象,用于载入存储信息的XML文件 System.Xml.XmlDocument xdoc = new XmlDocument(); xdoc.Load(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); //创建一个menber节点并将它添加到根节点下 XmlElement parentNode = xdoc.CreateElement("member"); xdoc.DocumentElement.PrependChild(parentNode); //创建所有用于存储信息的节点 XmlElement nameNode = xdoc.CreateElement("name"); XmlElement telphoneNode = xdoc.CreateElement("telphone"); …… ///获取文本信息 XmlText nameText = xdoc.CreateTextNode(pb.name); XmlText telphoneText = xdoc.CreateTextNode(pb.telphone); …… ///将上面的各个存储信息节点添加到menber节点下,但并不包含最终的值 parentNode.AppendChild(nameNode); parentNode.AppendChild(telphoneNode); …… ///将上面获取的文本信息添加到与之相对应的节点中 nameNode.AppendChild(nameText); telphoneNode.AppendChild(telphoneText); …… ///保存存储信息的XML文件 xdoc.Save(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); return "true"; } catch (Exception ex) { return ex.ToString(); } } //XmlTextReader类实现的查找程序 public static string GetXML_XmlTextReader(string keyName) { //XMLTextReader读取XML文件 XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); if (keyName == "") { string outMsg = ""; string currentNodeName = ""; int i = 1; //利用xmltextreader对象的Read()方法循环读取文件的节点 while (xmltextreader.Read()) { //当节点类型是元素的时候,记录该节点名称 if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element) { currentNodeName = xmltextreader.LocalName.ToString(); } if (xmltextreader.NodeType == System.Xml.XmlNodeType.Text) { //把这个人的属性组织成文本串,便天页面输出 outMsg += "<tr bgColor=#fff5b1><td>" + currentNodeName + "</td><td>" + xmltextreader.Value + "</td></tr>"; } if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member")) { outMsg += "<tr><td>联系人:</td><td><font color=red>(" + (i++) + ")</font></td></tr>"; } } outMsg = "<table>" + outMsg + "</table>"; //关闭xmltextreader xmltextreader.Close(); //显示联系人的详细信息 //Response.Write(outMsg); return outMsg; } else { //XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); bool findflag = false; string outMsg = "<table><tr><td collspan=2><font color=red>已经查找到下列联系人:</font></td></tr>"; string currentNodeName = ""; //利用xmltextreader对象的Read()方法自我表现读取文件的节点 while (xmltextreader.Read()) { //当找到了要查找的人,并且当前节点为元素,并且节点名称为"member"时退出循环 if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member")) { break; } //当节点类型是元素的时候,记录该节点名称 if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element) { currentNodeName = xmltextreader.LocalName.ToString(); } //还没有查找到指定的人,并且当前节点类型为文本,并且当前节点的节点值与要查找的人符合时 if ((findflag == false) && (xmltextreader.NodeType == System.Xml.XmlNodeType.Text) && (xmltextreader.Value == keyName))//当为文本类型同时对应的值为要查找的人的时候 { findflag = true;//设置找到了要查找的人的标志 } //如果已经找到,并且当前节点类型为文本时,循环记录这个人的所有信息 if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Text) { outMsg += "<tr bgcolor=#fff5b1><td align=right>" + currentNodeName + ":</td><td>" + xmltextreader.Value + "</td></tr>"; } //如果已经找到了这个人,同时Xtr当前为文本类型,那么 } //关闭xmltextreader xmltextreader.Close(); outMsg += "</table>"; //显示查找的人的详细信息 //Response.Write(outMsg); return outMsg; } } //利用XmlNodeReader实现查找的程序 public static string GetXML_XmlNodeReader(string keyName) { XmlDocument xml = new XmlDocument(); bool findNode = false; try { xml.Load(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml")); } catch { } XmlNodeReader read = new XmlNodeReader(xml); while (read.Read()) { if (read.NodeType == System.Xml.XmlNodeType.Element && read.LocalName.ToString().Equals(keyName)) { read.Read(); if (read.NodeType == System.Xml.XmlNodeType.Text) { //Response.Write(read.Value); return read.Value; //break; } } } return ""; } }
相关文章推荐
- C#操作XML代码整理
- C#操作XML代码整理
- C#操作XML代码整理
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页
- C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页
- C#:MapControl基本操作代码整理
- C#:MapControl基本操作代码整理
- C# XML操作 代码大全
- c#操作xml的代码(插入节点、修改节点、删除节点等)
- C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)
- C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)
- 转整理分享C#通过user32.dll模拟物理按键操作的代码
- C#用DataSet操作Xml的代码
- xml学习(三)---利用xml文件实现数据岛功能(网页显示xml文件中的内容免C#代码操作xml文件)
- [每天一个demo]用c#实现简单的xml操作代码
- [转]操作xml,将xml数据显示到treeview的C#代码
- C# 对XML基本操作代码总结
- 操作xml,将xml数据显示到treeview的C#代码
- C#代码操作XML进行增、删、改操作