Проверка сольных узлов в LINQ to XML - PullRequest
2 голосов
/ 12 января 2011

Как определить, имеет ли тег этот формат: <Closed /> в Linq To XML?

1 Ответ

1 голос
/ 12 января 2011

Можно использовать свойство XElement.IsEmpty . Помните, что IsEmpty проверяет, как указано в примечании на связанной странице MSDN:

Обратите внимание, что элемент, который содержит начальный и конечный тег без содержимого между тегами не считается быть пустым элементом. Имеет содержание без длины. Только элемент, который содержит только начальный тег и является выражается как завершенный пустой элемент, считается пустым.

Для иллюстрации рассмотрим следующий пример:

var xml = XElement.Parse(@"<root>
    <pair>foo</pair>
    <pair></pair>
    <single id=""42"" />
    <single />
</root>");

foreach (var element in xml.Elements())
{
    Console.WriteLine("{0}: {1}", element.IsEmpty, element);
}

// False: <pair>foo</pair>
// False: <pair></pair>
// True: <single id="42" />
// True: <single />

Если вы хотите проверить, что узел IsEmpty также не имеет атрибутов, добавьте проверку для element.Attributes().Any(), являющейся false.

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