Почему XDocument.Descendants (). Count ()> 0 для пустого документа? - PullRequest
0 голосов
/ 21 декабря 2010

Вот мой метод:

var document = XDocument.Parse(source);
if (document.Descendants().Count() > 0)
{
    // Some code that shouldn't execute
}
else
{
    // Code that should execute
}

Этот код прерывается, когда он находится в переменной 'document':

<ipb></ipb>

Поскольку у этого нет потомков, почему он вводитЕСЛИ условно?Он не должен пытаться загрузить что-либо, но он делает и ломается, когда ничего не находит для очистки.

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

Ответы [ 3 ]

5 голосов
/ 21 декабря 2010

Вы пробовали использовать:

document.Root.Descendants().Count() > 0;

Элемент Root находится под XDocument.

1 голос
/ 21 декабря 2010

ipb Ваш первый потомок в документе, верно? Разве ты не хочешь document.Root.Descendants()?

0 голосов
/ 13 ноября 2012

Вот еще один подход:

if (docToValidate.Root.Descendants().Any())
{
   // has child elements.
{
else
{
   // does not have any child elements.
}

где docToValidate относится к типу XDocument.

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