XML

1.介绍

eXtensible Markup Language (可扩展标记语言)

Xml就是用一种格式化的方式来存储数据,并且是文本文件。

Xml要求所有的标记必须成对出现,必须有一个根节点且只有一个,区分大小写。

2. 通过C#创建

注意:如果想要通过DataSet读取XMl,则根节点下所有子节点名称必须一致。

   XDocument doc = new XDocument();
   // 1.创建声明节点,也可不写,会自动生成
   //XDeclaration des = new XDeclaration("1.0","utf-8","yes");
   //doc.Declaration = des;
   // 2.创建根节点
   XElement root = new XElement("Users");
   doc.Add(root);

   // 3.创建子节点并设置子节点属性,向子节点中添加节点
   XElement user1 = new XElement("User");//子节点名称
   user1.SetAttributeValue("Id", 1);
   XElement name1 = new XElement("Name","Name1");
   XElement age1 = new XElement("Age","18");
   user1.Add(name1, age1);

   XElement user2 = new XElement("User"); //子节点名称
   user2.SetAttributeValue("Id", 1);
   XElement name2 = new XElement("Name","Name2");
   XElement age2= new XElement("Age","19");
   user2.Add(name2, age2);

   root.Add(user1, user2); //4.将子节点添加根节点之下
   doc.Save("Test.xml");

   var ds = new DataSet();
   ds.ReadXml("Test.xml");
   this.dgv.DataSource = ds.Tables[0];

结果:

<?xml version="1.0" encoding="utf-8"?>
<Users>
  <User Id="1">
    <Name>Name1</Name>
    <Age>18</Age>
  </User>
  <User Id="2">
    <Name>Name2</Name>
    <Age>19</Age>
  </User>
</Users>

3.查询

根据节点属性值查找指定节点。

    var result = from t in doc.Descendants("Usre")  //所有子节点中查找
                 //from t in doc.Root.Elements("User") //根节点下子节点查找
                 where t.Attribute("Id").Value == "2"
                 select new {
                     Name=t.Element("Name").Value,
                     Age=t.Element("Age").Value
                 };
    this.dgv.DataSource = result.ToList();

4.修改和删除

找到指定节点后直接修改就可以
 var result = from t in doc.Descendants("User")  //所有子节点中查找
              where t.Attribute("Id").Value == "2"
              select t;
 result.First().Element("Name").Value = "Name22"; //修改
 result.First().Remove(); //删除
 doc.Save("Test.xml"); //保存

5.读取XML文件

XDocument doc = XDocument.Load("xml.xml");
Last modification:January 14th, 2020 at 07:29 pm