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);
}
}
添加一个节点
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);
}
}
删除一个节点
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);
}
}
本文作者:rick
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!