если существует на узле XML в XmlNodeList C#

Как я могу проверить, существует ли узел в XmlNodeList? Я заполнил список, и мне нужно запросить определенные значения. вот как я это делаю.

var xList = xelRoot.SelectNodes("aaa/bbb/ccc/ddd/eee/fff/ggg/hhh");
foreach (XmlNode node in xList)
{    
       serviceVal = node["service"].InnerText.ToString(); 
}

бывают случаи, когда сервисный узел не существует. и когда это происходит, я получаю сообщение об ошибке «Ссылка на объект не установлена ​​​​на экземпляр объекта».

есть ли способ вернуть строковое значение, если узел не существует?

вот образец xml. обратите внимание, что правило 1 не имеет сервисного узла

<entry name="aaa">
              <from>any</from>
              <to>any</to>
              <source>any</source>
              <destination>any</destination>
              <source-user>any</source-user>
              <category>any</category>
              <service>any</service>
        </entry>
        <entry name="Rule 1">
              <from>any</from>
              <to>any</to>
              <source>any</source>
              <destination>any</destination>
              <source-user>any</source-user>
              <category>any</category>
        </entry>

person user5019819    schedule 23.06.2015    source источник
comment
Какой здесь тип node? (Не похоже, что это XmlNodeList...) Короткая, но полная программа действительно помогла бы прояснить проблему, а если вы можете использовать LINQ to XML, вполне вероятно, что это также приведет к более простому коду.   -  person Jon Skeet    schedule 23.06.2015


Ответы (1)


Просто проверьте на null...

XmlNode subNode;
foreach (XmlNode node in xList)
{    
    subNode = node["service"];
    if (subNode != null)
    {
        serviceVal = subNode.InnerText;
    }
    else 
    {
        serviceVal = string.Empty;
    } 
}
person canon    schedule 23.06.2015
comment
в hhh есть много дочерних узлов, и мне нужно захватить их все. запрос, чтобы получить все под hhh, работает. Я обновил вопрос с образцом XML - person user5019819; 23.06.2015
comment
@user5019819 user5019819 Тогда пройди тест null. - person canon; 23.06.2015