【发布时间】:2018-01-05 15:07:26
【问题描述】:
我想读取一个 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);
}
}
这不起作用,因为当节点没有值时会打印空白。 如何只关注有值的节点?
【问题讨论】:
-
如果每个信号的空项不同,您的代码将永远无法工作。这些值将被放置在每个数组的不同列中。
-
我需要一个 if 条件来消除所有空值节点并仅存储具有值的节点
-
为什么??????假设只有一个数组上的 SigNum 为空。然后所有其他项目将移动一列。
标签: c# xmldocument xmlnode xmlnodelist