HOME

C# XML 操作

在软件开发中,XML(可扩展标记语言)是一种常用的数据存储格式,它具有良好的可读性和结构化特性。C# 提供了多种内置工具和库来方便地处理 XML 数据。本篇文章将介绍如何使用 C# 进行基本的 XML 操作。

1. 创建 XML 文档

在 C# 中创建 XML 文档可以借助 System.Xml 命名空间中的类。首先,确保你已经引用了 System.XML 命名空间:

using System;
using System.Xml;

示例:创建一个简单的 XML 文件

public class Program
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        
        // 创建根元素
        XmlElement root = doc.CreateElement("Books");
        doc.AppendChild(root);
        
        // 添加子元素
        for (int i = 1; i <= 3; i++)
        {
            XmlElement book = doc.CreateElement("Book");
            book.SetAttribute("id", "book" + i.ToString());
            
            XmlText title = doc.CreateTextNode("C# Programming");
            XmlText author = doc.CreateTextNode("John Doe");
            
            book.AppendChild(title);
            book.AppendChild(author);
            
            root.AppendChild(book);
        }
        
        // 保存到文件
        doc.Save("books.xml");
    }
}

输出的 XML 文件内容

<?xml version="1.0"?>
<Books>
  <Book id="book1">
    <#C# Programming/>
    <author>John Doe</author>
  </Book>
  <Book id="book2">
    <#C# Programming/>
    <author>John Doe</author>
  </Book>
  <Book id="book3">
    <#C# Programming/>
    <author>John Doe</author>
  </Book>
</Books>

2. 解析 XML 文档

解析现有的 XML 文件也是 C# 的一个重要功能。可以使用 XmlDocument 类加载和遍历文件。

示例:读取并显示 XML 内容

public class Program
{
    public static void Main()
    {
        XmlDocument doc = new XmlDocument();
        
        // 加载XML文档
        doc.Load("books.xml");
        
        XmlNode root = doc.DocumentElement;
        
        Console.WriteLine($"Root element: {root.Name}");
        
        foreach (XmlNode bookNode in root.ChildNodes)
        {
            string id = bookNode.Attributes["id"].Value;
            string title = ((XmlElement)bookNode.FirstChild).InnerText;
            string author = ((XmlElement)((XmlNode)bookNode.LastChild)).InnerText;
            
            Console.WriteLine($"Book ID: {id}");
            Console.WriteLine($"Title: {title}");
            Console.WriteLine($"Author: {author}\n");
        }
    }
}

输出结果

Root element: Books
Book ID: book1
Title: C# Programming
Author: John Doe

Book ID: book2
Title: C# Programming
Author: John Doe

Book ID: book3
Title: C# Programming
Author: John Doe

3. 使用 LINQ to XML 进行 XML 操作

LINQ to XML 是一个更现代和灵活的库,它提供了类似于查询操作的方法来处理 XML 数据。下面展示如何使用 System.Xml.Linq 命名空间来实现相似的功能。

示例:创建并保存 XML 文件

using System;
using System.Xml.Linq;

public class Program
{
    public static void Main()
    {
        XDocument doc = new XDocument(
            new XElement("Books",
                Enumerable.Range(1, 3).Select(i =>
                    new XElement("Book", 
                        new XAttribute("id", "book" + i.ToString()),
                        new XElement("title", "C# Programming"),
                        new XElement("author", "John Doe")))));
        
        doc.Save("books.xml");
    }
}

输出的 XML 文件内容

<?xml version="1.0"?>
<Books>
  <Book id="book1">
    <title>C# Programming</title>
    <author>John Doe</author>
  </Book>
  <Book id="book2">
    <title>C# Programming</title>
    <author>John Doe</author>
  </Book>
  <Book id="book3">
    <title>C# Programming</title>
    <author>John Doe</author>
  </Book>
</Books>

结语

通过上述示例,我们可以看到 C# 提供了多种方式来操作 XML 数据。使用 System.Xml 命名空间中的类可以实现简单的读写功能,而 LINQ to XML 则提供了更强大和灵活的处理机制。选择合适的工具取决于具体的应用场景和个人偏好。

希望这些例子能够帮助你在实际开发中更加高效地处理 C# 中的 XML 操作!