【问题标题】:Getting all elements with a specific attribute in LINQ to XML在 LINQ to XML 中获取具有特定属性的所有元素
【发布时间】:2012-01-09 16:29:45
【问题描述】:

我一直在使用一些 linq to xml,但在解析 http://www.nationalbanken.dk/dndk/valuta.nsf/valuta-hist.xml 时遇到了一些问题,这是一个以丹麦语显示过去五天汇率的列表。

我试图在这里获取所有“立方体”属性“货币”等于特定值。

到目前为止,我有以下几点:

Stream stream = e.Result;
        XDocument doc = XDocument.Load(stream);
        var _rd = (from x in doc.Descendants("Cube")
                     where x.Attribute("currency").Value.Equals(SelectedCurrency.Instance.CurrencyCode)
                     select x).ToList();

因为这种问题以前已经回答过很多次了,但我不知道它是否与元素名称的重复有关,因为我得到的只是一个空白的 null。

【问题讨论】:

标签: .net xml linq


【解决方案1】:

您的问题是您没有使用命名空间来解析 xml。

XNamespace ns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref";
var _rd = (from x in doc.Descendants(ns+"Cube")
           where x.Attribute("currency").Value.Equals(SelectedCurrency.Instance.CurrencyCode)
           select x).ToList();

按照这些思路应该可以工作。

【讨论】:

  • 嗯,这是有道理的。谢谢...显然,当我尝试按照您的建议进行操作时,我得到了 NullReference,所以我添加了.Where(i => i.Attribute("currency") != null),然后我又什么也没得到,但不是例外...
  • 实际上,它确实有效。只有我搞砸了另一个价值。非常感谢...标记为答案...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2012-03-03
相关资源
最近更新 更多