c#对xml增删改查操作示例


以下是一个C#中操作XML文件的增删改查(CRUD)示例,我们将使用`System.Xml`命名空间下的类如`XmlDocument`来操作XML文件。请注意,这个示例假设你已经有了一个简单的XML文件,比如叫做`example.xml`,其内容如下:


<Books>
  <Book>
    <Title>Book 1</Title>
    <Author>Author 1</Author>
  </Book>
  <Book>
    <Title>Book 2</Title>
    <Author>Author 2</Author>
  </Book>
</Books>

### 1. 读取(Read)


using System;
using System.Xml;

class Program
{
    static void ReadXml()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("example.xml");

        foreach (XmlNode node in doc.SelectNodes("Books/Book"))
        {
            Console.WriteLine($"Title: {node["Title"].InnerText}, Author: {node["Author"].InnerText}");
        }
    }
}

### 2. 添加(Create)


using System;
using System.Xml;

class Program
{
    static void AddBook(XmlDocument doc)
    {
        XmlElement newBook = doc.CreateElement("Book");
        XmlElement title = doc.CreateElement("Title");
        title.InnerText = "Book 3";
        newBook.AppendChild(title);

        XmlElement author = doc.CreateElement("Author");
        author.InnerText = "Author 3";
        newBook.AppendChild(author);

        doc.DocumentElement.AppendChild(newBook);
        doc.Save("example.xml");
    }
}

### 3. 修改(Update)


using System;
using System.Xml;

class Program
{
    static void UpdateBook(XmlDocument doc)
    {
        XmlNode book = doc.SelectSingleNode("Books/Book[Title='Book 1']");
        if (book != null)
        {
            book["Author"].InnerText = "Updated Author 1";
            doc.Save("example.xml");
        }
    }
}

### 4. 删除(Delete)


using System;
using System.Xml;

class Program
{
    static void DeleteBook(XmlDocument doc)
    {
        XmlNode book = doc.SelectSingleNode("Books/Book[Title='Book 2']");
        if (book != null)
        {
            book.ParentNode.RemoveChild(book);
            doc.Save("example.xml");
        }
    }
}

请注意,为了简化示例,这里每个操作都作为一个独立的方法给出,并假设你已经有了一个`XmlDocument`的实例`doc`。在实际应用中,你可能需要在一个程序中组合这些操作,并处理异常和文件访问权限等问题。

此外,为了完整性,你可能还需要在程序的入口点(如`Main`方法)中加载XML文档,并调用这些方法。由于篇幅限制,这里不再展示完整的程序结构。