使用 LINQ 处理 XML 的基础知识






4.17/5 (9投票s)
使用 LINQ 创建、读取和写入 XML 文件
引言
就 C# 尤其是 XML 而言,我还是个初学者。为了学习 XML 处理,我阅读了互联网和 CodeProject 上的许多文档。但它们对于初学者来说一开始就太复杂了。在这里,我总结了我所学到的关于 XML 处理的知识。
背景
我将向您展示如何创建 XML 文件,在程序中读取值,并将值更新回 XML 文件。我不太了解 LINQ,但它在这里用于从 XML 文件中读取数据。对我来说,这似乎是最简单的方法。
使用代码
我编写了这四个方法:
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"); } }
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; } }
SaveXMLFile()
- 要更新特定节点,您需要使用XElement
的Element
方法来跟踪它。要替换值,请使用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); }
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 上的第一篇文章,因此欢迎提出改进写作风格和任何其他方面的建议。