linq操作xml

使用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节点真是简单方便的多了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值