C#编程之XML文件对象增删改操作
2013-11-30 19:26
399 查看
在windows mobile开发中,网络不畅的情况下数据可以暂存在XML文件中,等网络通畅时再进行数据库同步传输。但是,此种方式处理本地存储弊端很大:XML文件中对象在不断增多的过程中,程序需要遍历对象的次数也在增多,所以不推荐使用XML作为本地暂存方案;推荐使用sdf本地数据库来实现少量数据的本地操作。
bookstore.xml文件的内容如下:
1、创建C#控制台应用程序
此时可以同时生成其解决方案,如我的项目在:D:\VS_PROGRAM_PROJECT\ConsoleAppXMLoperate,项目名称为ConsoleAppXMLoperate。2、在主程序中编写XML操作代码
using System; using System.Collections.Generic; using System.Xml.Schema; using System.Text; namespace ConsoleAppXMLoperate { class Program { static void Main(string[] args) { Console.WriteLine("yyyy-MM-dd HH:mm:ss" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //Program.insertNode(); //Program.updateNode(); Program.deleteNode(); } /** * 添加节点信息 * * 往<bookstore>节点中插入一个<book>节点 */ public static void insertNode() { System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); xmlDoc.Load("bookstore.xml"); //查找<bookstore> System.Xml.XmlNode root = xmlDoc.SelectSingleNode("bookstore"); //创建一个<book>节点 System.Xml.XmlElement book = xmlDoc.CreateElement("book"); //设置该节点genre属性 book.SetAttribute("genre", "boonya"); //设置该节点ISBN属性 book.SetAttribute("ISBN", "2-3631-4"); System.Xml.XmlElement bookNode1 = xmlDoc.CreateElement("title"); //设置文本节点 bookNode1.InnerText = "Java"; //添加到<book>节点中 book.AppendChild(bookNode1); System.Xml.XmlElement bookNode2 = xmlDoc.CreateElement("author"); bookNode2.InnerText = "Simith Talent"; book.AppendChild(bookNode2); System.Xml.XmlElement bookNode3 = xmlDoc.CreateElement("price"); bookNode3.InnerText = "58.3"; book.AppendChild(bookNode3); //添加到<bookstore>节点中 root.AppendChild(book); xmlDoc.Save("bookstore.xml"); } /** * 修改节点信息 * * 将genre属性值为“bonnya“的节点的genre值改为“updateboonya”,将该节点的子节点<author>的文本修改为“boonya”。 */ public static void updateNode() { System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); xmlDoc.Load("bookstore.xml"); //获取bookstore节点的所有子节点 System.Xml.XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach (System.Xml.XmlNode xn in nodeList)//遍历所有子节点 { //将子节点类型转换为XmlElement类型 System.Xml.XmlElement xe = (System.Xml.XmlElement)xn; //如果genre属性值为“bonnya”,则修改该属性为“updatebonnya” if (xe.GetAttribute("genre").Equals("bonnya")) { xe.SetAttribute("genre", "updatebonnya"); System.Xml.XmlNodeList nls = xe.ChildNodes; //继续遍历获取xe子节点的所有子节点 foreach (System.Xml.XmlNode xn1 in nls) { System.Xml.XmlElement xe2 = (System.Xml.XmlElement)xn1; if (xe2.Name == "author") { xe2.InnerText = "boonya"; break; } } break; } } xmlDoc.Save("bookstore.xml"); } /** * 删除节点信息 * * 删除 <book genre="bonnya" ISBN="2-3631-4">节点。 */ public static void deleteNode() { System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); xmlDoc.Load("bookstore.xml"); System.Xml.XmlNodeList xnl = xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach (System.Xml.XmlNode xn in xnl) { System.Xml.XmlElement xe = (System.Xml.XmlElement)xn; if (xe.GetAttribute("genre") == "boonya") { //删除book对象 xe.ParentNode.RemoveChild(xe); } } xmlDoc.Save("bookstore.xml"); } } }
3、添加XML文件
在项目路径的bin\Debug下添加你的XML文件,如下图:bookstore.xml文件的内容如下:
<?xml version="1.0" encoding="utf-8"?> <bookstore> <book ISBN="1-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore>
4、测试程序
依次打开main函数的方法进行测试,也可以全部打开在里面设置断点调试就行。static void Main(string[] args) { Console.WriteLine("yyyy-MM-dd HH:mm:ss" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //Program.insertNode(); //Program.updateNode(); Program.deleteNode(); }资源下载地址:http://download.csdn.net/detail/boonya/6636299
相关文章推荐
- C#中用XmlTextReader对象操作XML文件
- C#温故而知新学习系列之XML编程—6-XmlSerializer类把复杂对象序列化为XML文档
- C#温故而知新学习系列之XML编程—8-XMLSerializer类把XML文档反序列化为对象
- XML文件操作(C#源代码)
- ExtJs4.0+ASP.net(c#) 操作XML文件
- c#操作xml文件
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# XML文件的一些操作(XmlDocument、XmlElement、XmlNode)
- C#编程技巧,轻松实现对文件操作
- C#XML文件操作工具类
- C#操作Xml:如何定义Xsd文件
- 在C#中操作XML (增删改)
- C#操作XML文件
- 【原】使用Json作为Python和C#混合编程时对象转换的中间文件
- C#读取xml 文件 报错:未将对象引用设置到对象的实例
- C#中对Web.config配置文件的操作(增删改读)
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)
- c# 操作xml文件
- C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
- C#基础知识复习3:装箱、拆箱-文件操作-对象序列化