gpt4 book ai didi

c# - 使用 LINQ C# 检查是否存在具有特定属性的任何 XML 节点

转载 作者:行者123 更新时间:2023-11-30 22:06:33 25 4
gpt4 key购买 nike

这是我的 XML:

<configuration>
<Script name="Test Script">
<arguments>
<argument key="CheckStats" value="True" />
<argument key="ReferenceTimepoint" value="SCREENING" />
<argument key="outputResultSetName" value="ResultSet" />
</arguments>
</Script>
</configuration>

如果存在特定的 key 属性,我正在尝试使用此 linq 语句获取 argument 元素的 value 属性。

XElement root = XElement.Load(configFileName);
var AttrVal = from el in root.Elements("Script").Elements("arguments").Elements("argument")
where el.Attribute("key").Value == "CheckStats"
select el.Attribute("value").Value;

然后我想尝试将属性 value 解析为 bool 值:

bool checkVal;
if (AttrVal != null)
{
if (!bool.TryParse(AttrVal.First().ToString(), out checkVal))
{
throw new Exception(string.Format("Invalid value"));
}
}

如果存在具有该属性的元素,则此代码有效,但如果不存在,我将得到一个 System.InvalidOperationException: Sequence contains no elements

我该如何解决这个问题?我认为通过检查 if (AttrVal != null) 它会起作用。我应该用 if (AttrVal.FirstOrDefault() != null) 或类似的东西替换它吗?谢谢

最佳答案

在if语句中,你可以这样写

if (AttrVal != null && AttrVal.Any())

编辑:我错了。异常应该来自 First(),而不是任何 Elements()。旧答案:

from el in root.Descendants("argument")

或者

from el in root.XPathSelectElements("./Script/arguments/argument")

关于c# - 使用 LINQ C# 检查是否存在具有特定属性的任何 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23567360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com