165.C# LINQ TO XML c# 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
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
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 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>
遍历
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);
}
}
添加一个节点
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);
}
}
删除一个节点
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);
}
}
相关文章
- 电脑键盘指法+常用快捷键文字及图片详解
- 机械键盘灯亮按键无反应(机械键盘灯亮按键无反应什么原因)
- Keychron Q14 Max键盘开售:小键盘左置、Alice配列,1298元起
- Keychron K15 Max矮轴机械键盘开售:75%Alice配列,567元起
- 单手35键设计,Keychron旗下Lemokey推出X0机械键盘
- 线上故障排查全套路盘点,运维大哥请自查
- 学习Pandas中操作Excel,看这一篇文章就够了
- 对不起,我把APP也给爬了(对不起我把你弄脏)
- Navigating global shifts and forging a path for emerging economies
- 多目标追踪小抄:快速了解MOT的基本概念