C# 写入XML文档三种方法详细介绍


在C#中,写入XML文档通常可以通过几种不同的方法来实现,每种方法都有其适用场景。以下是三种常用的方法及其详细介绍:

### 1. 使用`XmlDocument`类

`XmlDocument`类提供了一种在内存中创建和修改XML文档的方式。你可以使用它来构建DOM(文档对象模型),然后将其保存到文件中。


using System;
using System.Xml;

class Program
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();

        // 创建一个根节点
        XmlElement root = doc.CreateElement(string.Empty, "Books", string.Empty);
        doc.AppendChild(root);

        // 添加子节点
        XmlElement book = doc.CreateElement(string.Empty, "Book", string.Empty);
        book.SetAttribute("ISBN", "123456789");
        root.AppendChild(book);

        // 添加文本节点
        XmlElement title = doc.CreateElement(string.Empty, "Title", string.Empty);
        title.InnerText = "C# Programming";
        book.AppendChild(title);

        // 保存文档
        doc.Save("Books.xml");
    }
}

### 2. 使用`XDocument`类(LINQ to XML)

LINQ to XML提供了一种更现代、更简洁的方式来处理XML数据。它允许你使用LINQ查询来操作XML文档。


using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XDocument doc = new XDocument(
            new XElement("Books",
                new XElement("Book",
                    new XAttribute("ISBN", "123456789"),
                    new XElement("Title", "C# Programming")
                )
            )
        );

        // 保存文档
        doc.Save("Books.xml");
    }
}

### 3. 使用`XmlWriter`类

`XmlWriter`类提供了一种低级别的、面向流的API来创建XML文档。它允许你精细控制XML的生成过程,但相对于前两种方法,它可能更加复杂和繁琐。


using System;
using System.Xml;

class Program
{
    static void Main()
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;

        using (XmlWriter writer = XmlWriter.Create("Books.xml", settings))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("Books");

            writer.WriteStartElement("Book");
            writer.WriteAttributeString("ISBN", "123456789");
            writer.WriteStartElement("Title");
            writer.WriteString("C# Programming");
            writer.WriteEndElement(); // Title
            writer.WriteEndElement(); // Book

            writer.WriteEndElement(); // Books
            writer.WriteEndDocument();
        }
    }
}

每种方法都有其优点和适用场景。`XmlDocument`和`XDocument`提供了更高级别的抽象,使得操作XML更加直观和方便。而`XmlWriter`则提供了更灵活的控制,适合需要精确控制XML输出格式的场景。