1

我想读取一个 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);
            }
}

这不起作用,因为当节点没有值时会打印空白。我如何只关注具有价值的节点?

4

1 回答 1

0

只是不要从一开始就遍历它们

 foreach (XmlNode node in LoadResNodelist.Cast<XmlNode>().Where(x=>!string.IsNullOrEmpty(x.InnerXml))
于 2018-01-05T15:18:18.240 回答