是否有更快的方法来检查 LINQ to XML 中的 XML 元素并解析 bool?

发布于 2024-08-18 14:03:44 字数 1004 浏览 3 评论 0原文

仅供参考,这与我的上一个问题非常相似: 是否有更快的方法来检查 LINQ to XML 中的 XML 元素?

目前,我正在使用以下扩展方法来使用 LINQ 检索元素的 bool 值到 XML。它使用 Any() 来查看是否有任何具有给定名称的元素,如果有,它会解析 bool 值。否则,返回 false。此方法的主要用途是当我将 XML 解析为 C# 对象时,因此我不希望在元素不存在时出现任何问题。我可以更改它来尝试解析,但现在我假设如果该元素存在,那么解析应该成功。

有更好的方法吗?

/// <summary>
/// If the parent element contains a element of the specified name, it returns the value of that element.
/// </summary>
/// <param name="x">The parent element.</param>
/// <param name="elementName">The name of the child element to check for.</param>
/// <returns>The bool value of the child element if it exists, or false if it doesn't.</returns>
public static bool GetBoolFromChildElement(this XElement x, string elementName)
{
    return x.Elements(elementName).Any() ? bool.Parse(x.Element(elementName).Value) : false;
}

FYI, This is very similar to my last question: Is there a faster way to check for an XML Element in LINQ to XML?

Currently I'm using the following extension method that I made to retrieve the bool values of elements using LINQ to XML. It uses Any() to see if there are any elements with the given name, and if there are, it parses the value for a bool. Otherwise, it returns false. The main use for this method is for when I'm parsing XML into C# objects, so I don't want anything blowing up when an element is not there. I could change it to try parse, but for now I'm assuming that if the element is there, then the parsing should succeed.

Is there a better way to do this?

/// <summary>
/// If the parent element contains a element of the specified name, it returns the value of that element.
/// </summary>
/// <param name="x">The parent element.</param>
/// <param name="elementName">The name of the child element to check for.</param>
/// <returns>The bool value of the child element if it exists, or false if it doesn't.</returns>
public static bool GetBoolFromChildElement(this XElement x, string elementName)
{
    return x.Elements(elementName).Any() ? bool.Parse(x.Element(elementName).Value) : false;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残花月 2024-08-25 14:03:44

与上次非常相似:

return ((bool?) x.Element(elementName)) ?? false;

请注意使用到可空布尔类型的转换,而不是不可空版本;如果输入为 null,则不可为 null 的版本将引发异常。

此处使用空合并运算符意味着整个表达式类型只是 bool

Very similar to last time:

return ((bool?) x.Element(elementName)) ?? false;

Note the use of the conversion to the nullable Boolean type, rather than the non-nullable version; the non-nullable version will throw an exception if the input is null.

Using the null-coalescing operator here means the overall expression type is just bool.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文