Есть ли более быстрый способ проверить элемент XML в LINQ to XML и проанализировать bool? - PullRequest
2 голосов
/ 14 января 2010

К вашему сведению, это очень похоже на мой последний вопрос: Есть ли более быстрый способ проверки элемента XML в LINQ to XML?

В настоящее время я использую следующий метод расширения, который я использовал для получения значений bool элементов, используя LINQ to 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;
}

1 Ответ

4 голосов
/ 14 января 2010

Очень похоже на прошлый раз:

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

Обратите внимание на использование преобразования в обнуляемый логический тип, а не в ненулевую версию; ненулевая версия выдаст исключение, если введено нулевое значение.

Использование здесь оператора объединения нулей означает, что общий тип выражения равен bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...