【问题标题】:Check if xml element exists (no child nodes)检查 xml 元素是否存在(没有子节点)
【发布时间】:2014-03-04 20:46:39
【问题描述】:

我想检查是否存在具有特定值的 xml 元素。找到了很多例子,但这些都有多个子节点,但我的没有。

这是我的 XML:

<?xml version='1.0' encoding='UTF-8'?>
<data>
<cocktail>1</cocktail>
<cocktail>2</cocktail>
<cocktail>3</cocktail>
</data>

C#:(变量name包含我要检查它是否存在的值)

XDocument doc = XDocument.Load(stream, LoadOptions.None);
bool b = (from cocktail in doc.Root.Elements("data") 
     where (bool)cocktail.Name.Equals(name) select cocktail).Any();

【问题讨论】:

  • 所以你只想知道“鸡尾酒”元素是否存在?为什么不简单地使用 SelectXmlNodes(".//cocktail") 并检查计数?
  • 好的,也许我不清楚,但我想检查元素 cocktail 是否存在,value 存储在 name
  • 您使用 doc.Root.Elements("data") 的典型错误,因为 doc.Root 已经是 data 元素。我自己也被那个咬了。

标签: c# xml windows-phone-8 linq-to-xml


【解决方案1】:

您的问题并不完全清楚,但假设您想知道根元素是否有一个 &lt;cocktail&gt; 子元素,其值为 name,这将起作用:

bool exists = doc.Root.Elements("cocktail")
    .Where(element => element.Value == name)
    .Any();

【讨论】:

  • 我也更喜欢使用 Fluent API 而不是查询表达式
猜你喜欢
  • 2014-11-15
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2016-02-04
  • 1970-01-01
相关资源
最近更新 更多