ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 使用LINQ to XML查询带有前缀命名空间的xml子元素

2019-06-13 08:04:28  阅读:256  来源: 互联网

标签:c linq linq-to-xml xelement


所以我有一些XML通常看起来像这样

<wd:Data xmlns:wd="urn:com.foo.bar/GetResult">
    <wd:Result>
        <wd:field1>lorem</wd:field1>
        <wd:field2>ipsum</wd:field2>
        <wd:field3>dolor</wd:field3>
        <wd:field4>sit</wd:field4>
    </wd:Result>
</wd:Data>

命名空间以“wd”为前缀

我希望能够在< wd:Result> …< / wd:Result>中获取每个元素.并创建一个新的KeyValuePair< string,string>其中键是元素名称,值是元素的值,如下所示:

{“field1”,“lorem”}
{“field2”,“ipsum”}
{“field3”,“dolor”}
{“field4”,“sit”}

我的斗争是使用名称空间前缀.我是LINQ的新手,但我总是能够得到这样的代码来处理这样的代码:

var data = XElement.Parse(theXml); 
XNamespace ns = "urn:com.foo.bar/GetResults"; 
var result = data.Elements(ns + "Result")
                 .Select(x => new KeyValuePair<string, string>(x.Name.LocalName, x.Value))
                 .ToList();

我该如何查询这些数据以产生所需的结果?

我没有和LINQ结婚,所以社区认为最好的对我来说没问题.

解决方法:

事实证明我需要将Descendants()与Elements()结合起来

以下代码完全实现了我的目标:

    var data = XElement.Parse(theXml);  
    XNamespace ns = "urn:com.foo.bar/GetResults";  
    var result = data.Descendants(ns + "Result")
                     .Elements()
                     .Select(x => new KeyValuePair<string, string>(x.Name.LocalName, x.Value))
                     .ToList();

标签:c,linq,linq-to-xml,xelement
来源: https://codeday.me/bug/20190613/1231620.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有