如何识别 xmlnode 是否没有值?
how to identify if a xmlnode has no value?
我想读取一个 xml 节点并仅在它们存在时将其值存储在数组中。
这里是要解析的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 的值 present.As 您可以在第二个实例中看到该节点存在但没有值。我需要忽略这种情况。我该如何进行?
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);
}
}
这是行不通的,因为当节点没有值时会打印空白。
我如何只关注有值的节点?[=12=]
只是不要从一开始就循环遍历它们
foreach (XmlNode node in LoadResNodelist.Cast<XmlNode>().Where(x=>!string.IsNullOrEmpty(x.InnerXml))
我想读取一个 xml 节点并仅在它们存在时将其值存储在数组中。
这里是要解析的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 的值 present.As 您可以在第二个实例中看到该节点存在但没有值。我需要忽略这种情况。我该如何进行?
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);
}
}
这是行不通的,因为当节点没有值时会打印空白。 我如何只关注有值的节点?[=12=]
只是不要从一开始就循环遍历它们
foreach (XmlNode node in LoadResNodelist.Cast<XmlNode>().Where(x=>!string.IsNullOrEmpty(x.InnerXml))