我从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));
}
我很高兴能得到任何帮助,谢谢:)
答案 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();
}