You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断XML节点无值并仅提取有值的LoadRes节点值存入数组

Extract only non-empty LoadRes XML node values in C#

需求:读取XML中的LoadRes节点,仅当节点存在有效值时将其值存入数组。待解析的XML包含两个Signal节点,其中第一个的LoadRes有值400,第二个的LoadRes是空节点(无内容)。

现有C#代码如下,但它会输出空节点的空内容,无法满足仅处理有值节点的需求:

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);
    }
}

请问如何修改代码,只提取有有效值的LoadRes节点值?

没问题,你只需要在现有判断的基础上,增加对节点内容是否为空的检查就行。空的LoadRes节点(比如第二个Signal里的)的InnerXml是空字符串,所以我们可以用string.IsNullOrWhiteSpace()来过滤掉这些无效内容。

修改后的传统XmlDocument代码

XmlNodeList LoadResNodelist = doc.GetElementsByTagName("LoadRes");
foreach (XmlNode node in LoadResNodelist)
{
    // 先判断节点不为null,再检查内容是否非空且不是空白字符
    if (node != null && !string.IsNullOrWhiteSpace(node.InnerXml))
    {
        Console.WriteLine(node.InnerXml);
        LoadNum[counterLoadNum] = node.InnerXml;
        counterLoadNum++;
        Console.WriteLine("counterLoadNum = {0}", counterLoadNum);
    }
}

关键说明:

  • string.IsNullOrWhiteSpace()会同时检查字符串是否为null、空字符串""或者仅包含空白字符(比如空格、制表符),刚好能过滤掉那些没有有效值的空节点。
  • 这样修改后,只有第一个Signal里的LoadRes(值为400)会被处理,第二个空的LoadRes会被直接跳过,完全符合你的需求。

更简洁的LINQ to XML方案(推荐)

如果你使用的是.NET Framework 3.5及以上版本,建议用LINQ to XML来实现,代码更简洁直观,还能避免手动维护计数器的麻烦:

XDocument xDoc = XDocument.Load("your-xml-file-path.xml");
// 直接提取所有非空的LoadRes节点值到数组
string[] loadResValues = xDoc.Descendants("LoadRes")
                            .Where(x => !string.IsNullOrWhiteSpace(x.Value))
                            .Select(x => x.Value)
                            .ToArray();

// 遍历结果示例
foreach (var value in loadResValues)
{
    Console.WriteLine($"Valid LoadRes value: {value}");
}

内容的提问来源于stack exchange,提问作者meg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:15:28