有没有更快的方法来计算XmlNodeList

时间:2014-06-02 08:15:36

标签: c# xml

我从XML中读取了几个RegEx定义,count函数需要大约47.3%的时间。是否有更好/更快的方式完成工作?

private string[] XmlNodesToString(XmlNodeList TagName)
{
    int a = TagName.Count;   //47,3%
    int i = 0;
    StringBuilder sbTemp = new StringBuilder();
    while (a > 0)
    {
        if (TagName[i].InnerText != "null")//11,8%
        {
            sbTemp.AppendLine(TagName[i].InnerText);
        }
        i++;
        a--;
    }
    char[] cSplitDef = { '\n' };
    return (sbTemp.ToString().Split(cSplitDef, StringSplitOptions.RemoveEmptyEntries));
}

我很高兴能得到任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:0)

只是迭代节点:

private string[] XmlNodesToString(XmlNodeList TagName)
{
   return XmlNodeList.Cast<XmlNode>()
                     .Select(n => n.InnerText)
                     .Where(t => !String.IsNullOrEmpty(t))
                     .ToArray();
}

您不需要获取节点数,然后通过索引和构建字符串访问节点,稍后应将其拆分。


如果您无法使用LINQ:

private string[] XmlNodesToString(XmlNodeList nodes)
{
      List<string> result = new List<string>();

      foreach(XmlNode node in nodes)
          if (!String.IsNullOrEmpty(node.InnerText))
              result.Add(node.InnerText);

      return result.ToArray();
}