对XmlDocument中的节点进行排序的最佳方法是什么?(.Net)
我使用XSL样式表进行排序,但似乎速度非常慢。有没有更有效的方法 这是一个节点的平面列表,如果我将节点转换为一个对象并在GenericList中排序,会有帮助吗对XmlDocument中的节点进行排序的最佳方法是什么?(.Net),.net,sorting,xmldocument,.net,Sorting,Xmldocument,我使用XSL样式表进行排序,但似乎速度非常慢。有没有更有效的方法 这是一个节点的平面列表,如果我将节点转换为一个对象并在GenericList中排序,会有帮助吗 编辑我不需要最终结果是XML。根据我的经验,XSL是一种更好的方法,但是,在处理大型输入文件时,总体速度有点粗略 你可以自己做,但老实说,我不认为会更快 我能想到的唯一其他可能的选择是加载到dataview或其他东西中并在那里对其排序,然后返回到XML,但这似乎是一种错误的方法 编辑-根据您添加的信息,是的,我很确定加载到列表中会快得多
编辑我不需要最终结果是XML。根据我的经验,XSL是一种更好的方法,但是,在处理大型输入文件时,总体速度有点粗略 你可以自己做,但老实说,我不认为会更快 我能想到的唯一其他可能的选择是加载到dataview或其他东西中并在那里对其排序,然后返回到XML,但这似乎是一种错误的方法
编辑-根据您添加的信息,是的,我很确定加载到列表中会快得多……您需要尝试再次检查,但如果您需要另一种格式,您也可以这样做。首先检查您是否使用了低效的节点选择方法,例如//node.使用XslCompiledTransform使用xsl进行转换,但要确保缓存XslCompiledTransform,因为编译速度慢,执行速度极快 因此:
XslCompiledTransform xsl = (XslCompiledTransform)HttpRuntime.Cache.Get("my_xsl");
if (xsl == null)
{
string fileName = "path/to/your/xslfile.xsl";
xsl = new XslCompiledTransform();
xsl.Load(fileName);
HttpRuntime.Cache.Insert("my_xsl", xsl, new CacheDependency(new string[]{fileName}));
}
要进行转换,请使用如下方法:
public static XmlNode TransformToXml(IXPathNavigable xml, XslCompiledTransform xsl, XsltArgumentList arguments, XmlWriterSettings settings)
{
XmlDocument output = new XmlDocument();
using (XmlWriter writer = XmlWriter.Create(output.CreateNavigator().AppendChild()))
{
xsl.Transform(xml, arguments, writer);
}
return output;
}