65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 LINQ 处理 XML 的基础知识

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (9投票s)

2009年4月14日

CPOL

1分钟阅读

viewsIcon

45741

downloadIcon

1034

使用 LINQ 创建、读取和写入 XML 文件

引言

就 C# 尤其是 XML 而言,我还是个初学者。为了学习 XML 处理,我阅读了互联网和 CodeProject 上的许多文档。但它们对于初学者来说一开始就太复杂了。在这里,我总结了我所学到的关于 XML 处理的知识。

背景

我将向您展示如何创建 XML 文件,在程序中读取值,并将值更新回 XML 文件。我不太了解 LINQ,但它在这里用于从 XML 文件中读取数据。对我来说,这似乎是最简单的方法。

使用代码 

我编写了这四个方法:

  1. CreateXMLFile() - 如果文件不存在,则使用 XElement 创建它并保存。它创建以下 XML 文件
    <?xml version="1.0" encoding="utf-8"?>
    <users>
      <user>
        <name>admin</name>
        <password>password</password>
      </user>
      <user1>
        <name>admin</name>
        <password>password</password>
      </user1>
    </users>
    public void CreateXMLFile()
    {
        string fileName = "XMLFile.xml";
        string valuename = "admin", valuepassword = "password";
         if (!File.Exists(fileName))
        {
            XElement users =
                new XElement("users",
                    new XElement("user",
                        new XElement("name", valuename),
                        new XElement("password", valuepassword))
                   ,new XElement("user1",
                        new XElement("name", valuename),
                        new XElement("password", valuepassword))
                        );
            users.Save(fileName);
            MessageBox.Show("XML File Created");
        }
        else
        {
            MessageBox.Show("XML File Already Exists");
        }
    } 
  2. LoadXMLFile() - 要从 XML 文件读取值,请使用 XElement 和 LINQ 查询。您可以在这里了解更多关于 LINQ 的信息。
    public void LoadXMLFile()
    {
        string fileName = "XMLFile.xml";
        if (!File.Exists(fileName))
        {
            MessageBox.Show("Create XML File before Loading");
        }
        else
        {
            XElement dataElements = XElement.Load(fileName);
            //Following is a LINQ Query
            textBox1.Text = new XElement("users",
                (from c in dataElements.Elements("user")
                 select new XElement("user", c.Element("name"))).Take(1)).Value;
            textBox2.Text = new XElement("users",
                (from c in dataElements.Elements("user")
                 select new XElement("user", c.Element("password"))).Take(1)).Value;
        }
    } 
  3. SaveXMLFile() - 要更新特定节点,您需要使用 XElementElement 方法来跟踪它。要替换值,请使用 ReplaceNodes 方法
    public void SaveXMLFile()
    {
        string fileName = "XMLFile.xml";
        if (!File.Exists(fileName))
        {
            CreateXMLFile();
        }
        //Load the XML File
        XElement dataElements = XElement.Load(fileName);
         dataElements.Element("user").Element("name").ReplaceNodes(textBox1.Text);
        dataElements.Element("user").Element("password").ReplaceNodes(textBox2.Text);
         // Save the file
        dataElements.Save(fileName);
    }
  4. DeleteXMLFile() - 这使用了基本的 System.IO。如果文件存在,则使用 File.Delete 删除它
    public void DeleteXMLFile()
    {
        string fileName = "XMLFile.xml";
        if (File.Exists(fileName))
        {
            File.Delete(fileName);
            MessageBox.Show("XML File Deleted");
        }
        else
        {
            MessageBox.Show("Create XML File before Deleting");
        }
    } 

历史

  • V1.0 2009 年 4 月 12 日:初始版本
    这是文章的第一个版本,也是我在 CodeProject 上的第一篇文章,因此欢迎提出改进写作风格和任何其他方面的建议。
© . All rights reserved.