编辑
2025-02-04
C# 应用
00
请注意,本文编写于 91 天前,最后修改于 91 天前,其中某些信息可能已经过时。

目录

摘要
正文

摘要

LINQ to XML 是 .NET Framework 中的一项功能,它提供了一个富有表现力的编程模型,用于处理 XML 数据。它是 LINQ (Language Integrated Query) 技术的一部分,允许开发者使用熟悉的 C# 或 VB.NET 语法来查询、修改、创建和删除 XML 文档。LINQ to XML 设计之初就考虑到了性能和灵活性,使得处理 XML 数据比以往任何时候都更加简单和高效。

在使用LINQ to XML时需要添加System.Xml.Linq.dll的引用。

  • XElement类 表示XML元素,它是XContainer类的派生类,而XContainer类又派生于XNode类。一个元素就是一个节点。 

    XElement是LINQ to XML最重要最基本的类之一,它包含所有创建和操作XML元素所必需的功能。通过它可以创建元素,添加和修改元素的属性,操作元素的内容等。

  • XAttribute类 用来处理属性,属性是与元素相关联的名称/值对。

  • XDocument类 提供了处理有效XML文档的方法,包括声明、注释和处理指令。XDocument类派生自XContainer类,可以有子节点。XML标准限值XDocument对象只包含单个XElement子节点,此节点作为根节点或跟元素。

正文

创建一个XML

C#
private void btnCreateXml_Click(object sender, EventArgs e) { XElement xml = new XElement("Persons"); xml.Add(new XElement("Person" , new XElement("Name", "刘备") , new XElement("Age", "40"))); xml.Add(new XElement("Person" , new XElement("Name", "关羽") , new XElement("Age", "35"))); xml.Add(new XElement("Person" , new XElement("Name", "张飞") , new XElement("Age", "32"))); xml.Save("./1.xml"); }

采用Ling生成xml

C#
XElement xml = new XElement("Heros", from hero in heroes select new XElement("hero", new XAttribute("Name", hero.Name), new XAttribute("Age", hero.Age) )); xml.Save("./hero.xml");

生成的xml

XML
<?xml version="1.0" encoding="utf-8"?> <Heros> <hero Name="张飞" Age="38" /> <hero Name="刘备" Age="40" /> <hero Name="关羽" Age="39" /> <hero Name="曹操" Age="45" /> <hero Name="孙权" Age="31" /> </Heros>

遍历

C#
private void btnView_Click(object sender, EventArgs e) { XDocument xdoc=new XDocument(); xdoc = XDocument.Parse(File.ReadAllText("./1.xml")); var ret = xdoc.Element("Persons").Descendants(); foreach (var item in ret) { lstXml.Items.Add(item.Name+" "+item.Value); } }

image.png

添加一个节点

C#
private void btnAdd_Click(object sender, EventArgs e) { XDocument xdoc = new XDocument(); xdoc = XDocument.Parse(File.ReadAllText("./1.xml")); xdoc.Element("Persons").Add(new XElement("Person" ,new XElement("Name","曹操") , new XElement("Age", 50) )); var ret = xdoc.Element("Persons").Descendants(); foreach (var item in ret) { lstXml.Items.Add(item.Name + " " + item.Value); } }

image.png

删除一个节点

C#
private void btnDelete_Click(object sender, EventArgs e) { var elements = from x in xml.Elements("Person") where x.Element("Name").Value=="张飞" select x; elements.First().Remove(); var ret = from x in xml.Elements("Person") select x; foreach (var item in ret) { lstXml.Items.Add(item.Name + " " + item.Value); } }

image.png

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!