如何识别xmlnode是否没有值?

时间:2018-01-05 15:07:27

标签: c# xmldocument xmlnode xmlnodelist

我想读取一个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 个答案:

答案 0 :(得分:0)

只是不要从第一个地方循环它们

 foreach (XmlNode node in LoadResNodelist.Cast<XmlNode>().Where(x=>!string.IsNullOrEmpty(x.InnerXml))