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

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

В настоящее время я использую следующий метод расширения, который я сделал для получения значений int элементов, используя LINQ to XML. Он использует Any (), чтобы увидеть, есть ли какие-либо элементы с данным именем, и если они есть, он анализирует значение для int. В противном случае возвращается 0.

Основное использование этого метода - когда я анализирую 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 int value of the child element if it exists, or 0 if it doesn't.</returns>
public static int GetIntFromChildElement(this XElement x, string elementName)
{
    return x.Elements(elementName).Any() ? int.Parse(x.Element(elementName).Value) : 0;
}

1 Ответ

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

Основываясь на ответе Джона Скита на оригинальную строковую версию этого вопроса, я придумал следующее:

return int.Parse(((string)x.Element(elementName)) ?? "0");

Я не уверен, что это технически быстрее, хотя ...?

Если есть элемент, он выполняет только одну проверку для элемента, но если элемент не существует, он должен проанализировать строку "0".

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