Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种更快的方法来检查linqtoxml中的XML元素,并解析bool?_Xml_Linq_Parsing_Performance_Linq To Xml - Fatal编程技术网

有没有一种更快的方法来检查linqtoxml中的XML元素,并解析bool?

有没有一种更快的方法来检查linqtoxml中的XML元素,并解析bool?,xml,linq,parsing,performance,linq-to-xml,Xml,Linq,Parsing,Performance,Linq To Xml,仅供参考,这与我的最后一个问题非常相似: 目前,我正在使用下面的扩展方法来检索使用LINQtoXML的元素的bool值。它使用Any()查看是否有具有给定名称的元素,如果有,它将解析bool的值。否则,它将返回false。此方法的主要用途是在将XML解析为C#对象时使用,因此我不希望在元素不存在时发生任何爆炸。我可以将其更改为尝试解析,但现在我假设如果元素存在,那么解析应该成功 有更好的方法吗 /// <summary> /// If the parent element conta

仅供参考,这与我的最后一个问题非常相似:

目前,我正在使用下面的扩展方法来检索使用LINQtoXML的元素的bool值。它使用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;
}
//
///如果父元素包含指定名称的元素,则返回该元素的值。
/// 
///父元素。
///要检查的子元素的名称。
///子元素的bool值(如果存在),如果不存在,则为false。
公共静态bool GetBoolFromChildElement(此XElement x,string elementName)
{
返回x.Element(elementName).Any()?bool.Parse(x.Element(elementName).Value):false;
}

与上次非常相似:

return ((bool?) x.Element(elementName)) ?? false;
注意转换为可为null的布尔类型,而不是不可为null的版本;如果输入为null,则不可为null的版本将引发异常


在这里使用null合并运算符意味着整个表达式类型只是
bool

,您可以只为特定目的使用正则表达式。返回re.compile('.*.').match(xml.ToString())天哪,我从没想过空合并操作符会这么做!你就是那个人。@SkippyFire:null合并操作符在正确的情况下非常棒。如果我们得到一个空安全的解引用操作符,它会更好:)