C#操作xml文档增删改查(Linq to XML)

1.创建xml

 1         public static void CreateXmlDoc()
 2         {
 3             XElement myDoc =
 4                 new XElement("Customers",
 5                     new XElement("Customer", new XAttribute("ID", "1"),
 6                         new XElement("Usename", "Rock  Zed"),
 7                         new XElement("FirstName", "Rock"),
 8                         new XElement("LastName", "Zed"),
 9                         new XElement("PhoneNo", "35481254")
10                     )
11                );
12             myDoc.Save("Customer.xml");
13         }

创建的xml文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Customers>
  <Customer ID="1">
    <Usename>Rock  Zed</Usename>
    <FirstName>Rock</FirstName>
    <LastName>Zed</LastName>
    <PhoneNo>35481254</PhoneNo>
  </Customer>
</Customers>

2.获取XML文档内容

 1         #region Load XML doc
 2         public static XDocument GetXmlDoc()
 3         {
 4             try
 5             {
 6                 XDocument myDoc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
 7                 return myDoc;
 8             }
 9             catch (System.IO.FileNotFoundException ex)
10             {
11                 return null;
12             }
13         }
14         #endregion
15         //将xml内容与自定义类相对应 获取到对应类的集合
16         public static List<Customer> GetXmlData()
17         {
18             List<Customer> listCs = new List<Customer>();
19             XDocument myDoc = XmlHelper.GetXmlDoc();
20             if (myDoc != null)
21             {
22                 var query = from c in myDoc.Descendants("Customer")
23                             select new Customer
24                             {
25                                 ID=c.FirstAttribute.Value,
26                                 UseName = c.Element("Usename").Value,
27                                 FirstName = c.Element("FirstName").Value,
28                                 LastName = c.Element("LastName").Value,
29                                 Phone = c.Element("PhoneNo").Value
30                             };
31                 foreach (var item in query)
32                 {
33                     listCs.Add(item);
34                 }
35             }
36             return listCs;
37         }

以上的Customer类的属性和xml文档节点内容相对应 Customer类如下

    public class Customer
    {
        public string ID { get; set; }
        public string UseName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Phone { get; set; }
    }

3.向XML文档添加内容

        #region Insert new item
        public static void InsertNewElement(Customer cs)
        {
            try
            {
                // Load current document.
                XDocument myDoc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
                Random r = new Random();
                // add new element
                XElement newElement = new XElement("Customer",new XAttribute("ID", r.Next(5000)),
                          new XElement("Usename", cs.UseName),
                          new XElement("FirstName", cs.FirstName),
                          new XElement("LastName", cs.LastName),
                          new XElement("PhoneNo", cs.Phone));
                myDoc.Descendants("Customers").First().Add(newElement);
                // Save changes.
                myDoc.Save(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

4.修改XML文档内容

 1         public static void EditElement(Customer cs)
 2         {
 3             try
 4             {
 5                 // Load current document.
 6                 XDocument myDoc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
 7                 //by ID load xml
 8                 IEnumerable<XElement> products = from c in myDoc.Descendants("Customer") where c.FirstAttribute.Value == cs.ID select c;
 9                 if (products.Count() > 0)
10                 {
11                     XElement product = products.First();
12                     //replace xml element
13                     product.ReplaceNodes( new XElement("Usename", cs.UseName), new XElement("FirstName", cs.FirstName), new XElement("LastName", cs.LastName), new XElement("PhoneNo", cs.Phone));
14                 }
15                 myDoc.Save(HttpContext.Current.Server.MapPath("~/Customer.xml"));
16             }
17             catch (Exception ex)
18             {
19                 throw ex;
20             }
21         }

5.删除XML文档节点

 1         public static void DeleteElement(string id)
 2         {
 3             try
 4             {
 5                 XDocument myDoc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
 6                 IEnumerable<XElement> customer = from c in myDoc.Descendants("Customer") where c.FirstAttribute.Value == id select c;
 7                 if (customer.Count() > 0)
 8                 {
 9                     customer.First().Remove();
10                 }
11                 myDoc.Save(HttpContext.Current.Server.MapPath("~/Customer.xml"));
12             }
13             catch (Exception ex)
14             {
15                 throw ex;
16             }
17         }

6.通过指定值查询特定XML节点内容

 1         #region Query customer
 2         public static Customer FindCustomerByID(string id)
 3         {
 4             try
 5             {
 6                 Customer cs = new Customer();
 7                 // Load current document.
 8                 XDocument myDoc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Customer.xml"));
 9                 var query = from c in myDoc.Root.Elements("Customer")
10                             where (string)c.FirstAttribute.Value == id
11                             select new Customer
12                             {
13                                 ID = c.FirstAttribute.Value,
14                                 UseName = c.Element("Usename").Value,
15                                 FirstName = c.Element("FirstName").Value,
16                                 LastName = c.Element("LastName").Value,
17                                 Phone = c.Element("PhoneNo").Value
18                             };
19
20                 foreach (var item in query)
21                 {
22                     cs.ID = item.ID;
23                     cs.UseName = item.UseName;
24                     cs.FirstName = item.FirstName;
25                     cs.LastName = item.LastName;
26                     cs.Phone = item.Phone;
27                 }
28                 return cs;
29             }
30             catch (Exception ex)
31             {
32                 return null;
33             }
34         }
35         #endregion

7.结合以上方法做了一个MVC操作XML文档的增删改查的Demo 源码地址如下

https://github.com/ZedH/XmlTest

原文地址:https://www.cnblogs.com/Zed-H/p/11074893.html

时间: 2024-10-24 23:49:45

C#操作xml文档增删改查(Linq to XML)的相关文章

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)

以下是代码: using System;using System.Collections.Generic;using System.Linq;using System.Web; using System.Xml; namespace WebApplication2{ /// <summary>    /// XMLHelper XML文档操作管理器    /// </summary>    public class XMLHelper    {        public XMLH

XML(五)dom4j增删改查

book2.xml <?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>JAVA</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> <书> <书名>ANDROID</书名> <作者>XXXXXX</作者>

EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)

前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Order { public int OrderId { get; set; } public string OrderTitle { get; set; } public string CustomerName { get; set; } public DateTime TransactionDate

python操作redis--------------数据库增删改查

安装第三方模块redis import redis 一.连接数据库,操作增删改查 1.连接数据 (1).host必填 服务器IP(2).端口号默认的事6379,可以不填写,如果改成其他端口号,要填写 (3).密码默认不填写,如果自己设置了密码,要填写 (4).db必填 值是整数,表示第几个数据库 2.增删改查    操作string类型 (redis是一个键值对) 2.1增加/修改key-value值 可以设置失效时间,截图如下: 2.2查询数据 (1).通过get方法的key值,获取的valu

小白5分钟上手c#数据库操作(二) 基础的增删改查

上一小节,我们已经准备好了一个数据库文件,现在我们先不用微软包装好的各种Entity Framework, 自己用基础的方法对数据库进行增删改查. 前期准备: 新建一个console工程,把上一小节的数据库拷贝到工程目录下,copy local 设置成true, 目录结构大致长这样: 然后添加一个nuget包,方面后面使用各种c#提供的方法: 基本上常用的操作里,查数据是一类,增删改是一类 先看怎么查数据: // 查询数据 using (var connection = new SQLiteCo

Asp.Net 操作XML文件的增删改查 利用GridView

不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="XmlManager.index" %> <!

mySQL CRUD操作(数据库的增删改查)

CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除   1.添加数据 insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 给特定的列添加数据 insert into Info (code,name) values('p010','李四'); 自增长列的处理 insert into family values('','p001','数据','T001','数据',1);

Android高级-Android操作SQL数据管理,增删改查

已经学了好几天SQL了,昨天刚接触到Android操作SQL数据库,晚上老师留了一个作业,效果图如下 分别是,主界面,和修改,添加,以及删除界面 首先我们先来实现布局 MainActivity.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo