Проверка, существует ли дочерний элемент XML с Linq к XML

display: -moz-inline-stack;
display: inline-block;
zoom: 1;
*display: inline;

Foo Hack - кросс-браузерная поддержка для стилей inline-block (2007-11-19) .

8
задан marc_s 28 July 2009 в 09:39
поделиться

2 ответа

Вот подход к запросу:

XElement yourDoc = XElement.Load("your file name.xml");

bool hasPhone = (
    from user in yourDoc.Descendants("user")
    where (int)user.Attribute("id") == 2
    select user.Descendants("phone").Any()
    ).Single();
13
ответ дан 5 December 2019 в 10:04
поделиться

Возможно, есть лучший и изящный способ сделать это (я еще не очень хорошо знаком с Linq-to-XML), но этот фрагмент кода должен работать:

XElement yourDoc = XElement.Load("your file name.xml");

foreach (XElement user in yourDoc.Descendants("user"))
{
    foreach(XElement contact in user.Descendants("contactDetails"))
    {
       var phone = contact.Descendants("phone");

       bool hasPhone = (phone.Count() > 0);
    }
}

Он в основном перечисляет все "пользовательские" узлы в вашем XML, а затем все узлы "contactDetails" внутри пользовательского узла, а затем проверьте, есть ли под ними какие-либо подузлы "phone".

The .Descendants () вызов вернет список узлов XElement, и если нет ни одного из запрашиваемых вами типов, .Count () в этом списке ( IEnumerable ) будет вернуть 0 - это то, что проверяет мой код.

Marc

3
ответ дан 5 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: