Как определить, если xmlnode не имеет значения?

Я хочу прочитать xmlnode и хранить его значения в массиве только тогда, когда они существуют.

Вот XML-файл для анализа:

 <Signals>
  <Signal_1>
    <SigNum>1</SigNum>
    <SigTypeUni>HIL RPM SYNC OUTPUT </SigTypeUni>
    <SigType>RPM_OUT_0_SENSOR SUPPLY</SigType>
    <HilCnctr>ECU1</HilCnctr>
    <HilCnctrPin>F13</HilCnctrPin>
    <EtasBoard>ESx335_1</EtasBoard>
    <EtasChannel>REF_SG_0</EtasChannel>
    <EtasBobPin>209</EtasBobPin>
    <AddHilIntCnctr />
    <AddPin />
    <LoadNum />
    <LoadRef />
    <LoadRes>400</LoadRes>
    <LoadCard />
  </Signal_1>
  <Signal_2>
    <SigNum>2</SigNum>
    <SigTypeUni>HIL RPM SYNC OUTPUT </SigTypeUni>
    <SigType>RPM_OUT_0_HALL</SigType>
    <HilCnctr>ECU1</HilCnctr>
    <HilCnctrPin>F11</HilCnctrPin>
    <EtasBoard>ESx335_1</EtasBoard>
    <EtasChannel>OUT_SG_0</EtasChannel>
    <EtasBobPin>207</EtasBobPin>
    <AddHilIntCnctr />
    <AddPin />
    <LoadNum />
    <LoadRef />
    <LoadRes />
    <LoadCard />
  </Signal_2>
 </Signals>

Я хочу извлечь значение LoadRes только тогда, когда оно присутствует. Как вы можете видеть во втором случае, узел присутствует, но не имеет значения. Мне нужно игнорировать такие случаи. Как мне поступить?

XmlNodeList LoadResNodelist = doc.GetElementsByTagName("LoadRes");     

        foreach (XmlNode node in LoadResNodelist)
        {


            if (node != null) 
            {
                Console.WriteLine(node.InnerXml);
                LoadNum[counterLoadNum] = node.InnerXml;
                counterLoadNum = counterLoadNum + 1;
                Console.WriteLine("counterLoadNum = {0}", counterLoadNum);
            }
}

Это не работает, так как когда узел не имеет значения, печатается пробел. Как мне сосредоточиться только на узлах, которые имеют значение?

1 ответ

Решение

Просто не перебирайте их с самого начала

 foreach (XmlNode node in LoadResNodelist.Cast<XmlNode>().Where(x=>!string.IsNullOrEmpty(x.InnerXml))
Другие вопросы по тегам