使用linq查询xml文档
我们之前都是通过对xml节点进行操作,现在已经支持linq像操作sql一样操作xml信息了
<persons>
<person>
<name>张三</name>
<age>15</age>
<sex>男</sex>
</person>
<person>
<name>李四</name>
<age>19</age>
<sex>女</sex>
</person>
<person>
<name>王五</name>
<age>27</age>
<sex>男</sex>
</person>
</persons>
这次通过linq来操作xml
static void Main(string[] args)
{
XDocument xdoc = XDocument.Load(@"C:\Users\~~ \Desktop\xml1.xml");
Console.WriteLine(xdoc.ToString());
var query = from person in xdoc.Descendants("person")
select person.Value;
Console.WriteLine("{0} person found", query.Count());
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
输出结果
<persons>
<person>
<name>张三</name>
<age>15</age>
<sex>男</sex>
</person>
<person>
<name>李四</name>
<age>19</age>
<sex>女</sex>
</person>
<person>
<name>王五</name>
<age>27</age>
<sex>男</sex>
</person>
</persons>
3 person found
张三15男
李四19女
王五27男
如果再细分查找里面的value值的话,可以使用下面的方法
static void Main(string[] args)
{
XDocument xdoc = XDocument.Load(@"C:\Users\Desktop\xml1.xml");
Console.WriteLine(xdoc.ToString());
var query = from person in xdoc.Descendants("person")
select new
{
name = person.Element("name").Value,
age = person.Element("age").Value,
sex = person.Element("sex").Value,
};
Console.WriteLine("{0} person found", query.Count());
foreach (var item in query)
{
Console.WriteLine("name:" + item.name);
Console.WriteLine("age:" + item.age);
Console.WriteLine("sex:" + item.sex);
}
Console.ReadLine();
}
输出
<persons>
<person>
<name>张三</name>
<age>15</age>
<sex>男</sex>
</person>
<person>
<name>李四</name>
<age>19</age>
<sex>女</sex>
</person>
<person>
<name>王五</name>
<age>27</age>
<sex>男</sex>
</person>
</persons>
3 person found
name:张三
age:15
sex:男
name:李四
age:19
sex:女
name:王五
age:27
sex:男
可以看出linq操作xml节点真是简单方便的多了。