c#对XML文档的创建与增删改查的示例代码

一、创建的第一种方式

//1、创建一个XML文档
   XmlDocument doc = new XmlDocument();
   //2、创建第一行描述信息
   XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
   //3、将创建的第一行描述信息添加到文档中
   doc.AppendChild(dec);
   //4、给文档添加根节点
   XmlElement Books = doc.CreateElement("Books");
   doc.AppendChild(Books);
   XmlElement Book = doc.CreateElement("Book");
   Books.AppendChild(Book);
   XmlElement name = doc.CreateElement("name");
   name.InnerText = "水浒传";
   Book.AppendChild(name);
   XmlElement author = doc.CreateElement("author");
   author.InnerText = "匿名";
   author.SetAttribute("name", "wjl");
   author.SetAttribute("count", "30");
   Book.AppendChild(author);
   doc.Save("Book.xml");
   Console.WriteLine("保存成功!");
   Console.ReadKey();

创建结果如下:

二、创建的第二种方式

 class Program
   {
    static void Main(string[] args)
    {
     List<Student> list = new List<Student>();
     list.Add(new Student(1, "wjl1", 22, "男"));
     list.Add(new Student(2, "wjl2", 21, "男"));
     list.Add(new Student(3, "wjl3", 22, "男"));
     list.Add(new Student(4, "wjl4", 24, "男"));
     XmlDocument xmldoc = new XmlDocument();
     XmlDeclaration xmldec = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null);
     xmldoc.AppendChild(xmldec);
     XmlElement person = xmldoc.CreateElement("Person");
    xmldoc.AppendChild(person);
     for (int i = 0; i < list.Count; i++)
     {
      XmlElement stu = xmldoc.CreateElement("student");
      stu.SetAttribute("ID", list[i].Id.ToString());
      person.AppendChild(stu);
      XmlElement name = xmldoc.CreateElement("name");
      XmlElement age = xmldoc.CreateElement("age");
      name.InnerText = list[i].Name;
      age.InnerText = list[i].Age.ToString();
      stu.AppendChild(name);
      stu.AppendChild(age);
    }
     xmldoc.Save("Student.xml");
    Console.WriteLine("Student.xml");
    Console.ReadKey();
    }
  }
   class Student
   {
   int id;
   string name;
   int age;
   string sex;
   public Student(int id, string name, int age, string sex)
    {
     this.id = id;
     this.name = name;
     this.age = age;
     this.sex = sex;
   }
   public Student()
   {
   }
   }

创建结果如下:

三、对XML文件的添加

XmlDocument doc = new XmlDocument();
   //首先判断文件是否存在,如果存在则追加否则在创建一个
   if (File.Exists("Student.xml"))
   {
    //加载
    doc.Load("Student.xml");
    //获取根节点,给根节点添加子节点
    XmlElement person = doc.DocumentElement;
    XmlElement student = doc.CreateElement("student");
    student.SetAttribute("ID", "1");
    person.AppendChild(student);
    XmlElement name = doc.CreateElement("name");
    XmlElement age = doc.CreateElement("age");
    name.InnerText = "zjs";
    age.InnerText = "41";
    student.AppendChild(name);
    student.AppendChild(age);
   }
   else {
   }
   doc.Save("Student.xml");
   Console.WriteLine("Student.xml 保存成功");

四、对XML文档的查询、修改、删除

方法1:

文档结构为:

if (File.Exists("order.xml"))
   {
    doc.Load("order.xml");
    // 获取根节点
    XmlElement orderElement = doc.DocumentElement;
    XmlNodeList orderChildr = orderElement.ChildNodes;
    foreach (XmlNode item in orderChildr)
    {
     Console.WriteLine("节点名称:"+ item.Name + "节点的 InnerText :" + item.InnerText);
    }
    XmlElement orderitem = orderElement["Items"];
    XmlNodeList itemlist = orderitem.ChildNodes;
    foreach (XmlNode item in itemlist)
    {
     Console.WriteLine(item.Attributes["Name"].Value + " " + item.Attributes["Count"].Value);
    }
 }
   else
   {
    Console.WriteLine("文件不存在!");
   }
   Console.ReadKey();
   // doc.Save("Student.xml");
   Console.WriteLine("Student.xml 保存成功");

方法2:

#region 使用XPath的方式来读取XML文件
   // 获取文档对象
   XmlDocument doc = new XmlDocument();
   doc.Load("order.xml");
   //获取根节点
   XmlElement order = doc.DocumentElement;
   // 获取单个节点
   //XmlNode xn = order.SelectSingleNode(@"/Order/CustomerName");
   XmlNode xn = order.SelectSingleNode(@"/Order/Items/OrderItem[@Name='码表']");
   xn.Attributes["Count"].Value = "20"; // 修改
   doc.Save("Order.xml");
   Console.WriteLine(xn.Attributes["Count"].Value);
   Console.ReadKey();
   #endregion

删除元素指定的特性:

xn.Attributes.RemoveNamedItem("Count"); //删除元素指定的特性

删除子节点:

XmlNode xn = order.SelectSingleNode(@"/Order/Items");
XmlNode xnchild = order.SelectSingleNode(@"/Order/Items/OrderItem[@Name = '雨衣']");
xn.RemoveChild(xnchild); //删除指定的子节点

删除当前所有子节点:

xn.RemoveAll(); //删除当前节点的所有子节点 

删除当前节点的所有特性:

xnchild.Attributes.RemoveAll(); 

以上就是c#对XML文档的创建与增删改查的示例代码的详细内容,更多关于c#对XML文档的创建与增删改查的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#使用XmlDocument或XDocument创建xml文件

    使用XmlDocument或XDocument创建xml文件,具体内容如下 需引用:System.Xml; System.Xml.Linq; 1.使用XmlDocument创建xml(入门案例) static void Main(string[] args) { //使用XmlDocument创建xml XmlDocument xmldoc = new XmlDocument(); XmlDeclaration xmldec = xmldoc.CreateXmlDeclaration("1.0&

  • C#读取XML的CDATA节点内容实例详解

    首先看实例代码: 昨天读取了以下XML, 之前没有读取过类似的格式,用一种比较笨的方法读取的,记录下 <?xml version="1.0"?> <response> <srvver>1.0</srvver> <srvcode>000</srvcode> <payload> <param type="XML" key="data"> <![CDA

  • C# 读写XML文件实例代码

    C#史上最简单读写xml文件方式,创建控制台应用程序赋值代码,就可以运行,需要改动,请自行调整 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ConsoleApp1 { class Program { public cons

  • C# 创建,读取,写入XML文件

    Xml文件如下: <?xml version="1.0" encoding="utf-8"?> <Advertisements> <Ad> <ImageUrl>001.jpg</ImageUrl> <NavigateUrl>001.aspx</NavigateUrl> <Impressions>10</Impressions> <Keyword>g

  • C#读取XML的三种实现方式

    前言 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.(类似还有Json)微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件 在程序中访问进而操作XML文件一般有两种模型: DOM(文档对象模型):使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题

  • C# XML字符串包含特殊字符的处理转换方法小结

    为了能正常输出XML格式的内容,必须要对不被XML允许的那些特殊字符进行转换.本文介绍的正是如何使用C#判断XML字符串是否含特殊字符并进行转换. 以下是几个特殊字符的对应实体. < < 小于号 > > 大于号 & & 和 &apos; ' 单引号 " " 双引号 在C#中,直接调用C#提供的方法,保存之后就会自动将特殊字符转为对应实体: string s =System.Security.SecurityElement.Escape(s

  • c#读取XML多级子节点

    话不多说,请看代码: string xmlFilePath = "D:\\log_xml\\MarInfo.xml"; //Server.MapPath(@"相对路径如/xml/test.xml"); XmlDocument doc = new XmlDocument(); doc.Load(xmlFilePath);//加载XML文件 string rst = ""; //使用xpath表达式选择文档中所有的student子节点 XmlNode

  • C# xmlSerializer简单用法示例

    本文实例讲述了C# xmlSerializer简单用法.分享给大家供大家参考,具体如下: 先上实体类 public class Entity { public Entity() { } public Entity(string c, string f) { name = c; school = f; } public string name; public string school; } 使用时声明 List<Entity> entityList=null; XmlSerializer xs

  • C#实现XML文件读取

    本文实例为大家分享了C#实现XML文件读取的具体代码,供大家参考,具体内容如下 using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml.Serialization; /// <summary> /// 工具类 /// </summary> public static class Tools { /// <su

  • C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨论

    基类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DeserializeTest { public class SettingsBase { private string m_fileName; public string FileName { get { return m_fileName; } set { m_fileName = value;

  • C#基于Linq和反射实现数据持久化框架Xml4DB详解

    我们知道目前大部分的数据库都是关系型数据库, 所谓关系型数据库,就是指建立在关系模型 基础之上的数据库系统,如Oracle.SQL Server.Access.MySQL等.关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织.一个偶然的机会我接触到了DB4O,它是一个完全面向对象的开源数据库,它的出现完全颠覆了传统的数据库在人们心中的形象,因为传统的数据库需要在数据体.实体之间转换,而且需要映射文件提供映射关系.正是这个项目让我产生了编写Xml4DB的想

随机推荐