【问题标题】:how to identify if a xmlnode has no value?如何识别 xmlnode 是否没有价值?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 现在我收到一条错误消息,提示 xmlnodelist 不包含“where”的定义,并且....我正在使用 xmldocument
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多