代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

处理XML中的重复节点

  •  0
  • JYelton Melchior Blausand  · 技术社区  · 15 年前

    脚本:

    我使用C#解析XML文件中的值,并使用以下方法:

        private static string GetXMLNodeValue(XmlNode basenode, string strNodePath)
        {
            if (basenode.SelectSingleNode(strNodePath) != null)
                return (basenode.SelectSingleNode(strNodePath).InnerText);
            else
                return String.Empty;
        }
    

    我最近遇到一个问题,同一文档级别的两个节点共享同一个名称。

    重复节点都需要被读取和利用;它们的子节点具有不同的值(这可以区分它们)。目前我只有两个节点,每个节点名为<流程>以及名为<的子节点;名称>包含唯一名称的。其他子节点包含各种值,例如内存使用率。在处理和存储子节点的值时,我基本上会忽略父节点名称,并基于子节点使用自己的名称<名称>价值观。

    获取重复命名节点的值的最佳方法是什么?我的想法是将与节点名匹配的所有值加载到一个数组中,然后使用数组索引引用它们。不过,我不知道如何实现这一点(我不太精通XML导航。)

    示例XML

    <?xml version="1.0" ?>
    <info>
      <processes>
        <process>
            <name>program1</name>
            <memory_use>24.8</memory_use>
        </process>
        <process>
            <name>program2</name>
            <memory_use>19.0</memory_use>
        </process>
      </processes>
    </info>
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   mfeingold    15 年前

    使用SelectNodes方法,它将为您提供与Xpath匹配的所有节点的列表

        2
  •  1
  •   John Saunders    15 年前

    这取决于您打算如何处理“复制”节点。有多个同名的是什么意思?生成XML的程序中是否有错误?它是正确的,并且允许无限数量的这样的节点吗?当不止一个的时候,它们是什么意思?