我正在使用此擴展方法來轉換帶有xslt的非常大的xml文件。轉換大型XML文件
不幸的是,我在source.ToString()行上得到一個OutOfMemoryException。
我意識到一定有更好的辦法,我只是不確定那會是什麼?
public static XElement Transform(this XElement source, string xslPath, XsltArgumentList arguments)
{
var doc = new XmlDocument();
doc.LoadXml(source.ToString());
var xsl = new XslCompiledTransform();
xsl.Load(xslPath);
using (var swDocument = new StringWriter(System.Globalization.CultureInfo.InvariantCulture))
{
using (var xtw = new XmlTextWriter(swDocument))
{
xsl.Transform((doc.CreateNavigator()), arguments, xtw);
xtw.Flush();
return XElement.Parse(swDocument.ToString());
}
}
}
想法?解決方案?等
更新: 現在,這已解決,我有驗證架構的問題! Validating large Xml files
有多大很大? – 2010-05-21 19:04:21
我已經發現改變* doc.LoadXml(source.ToString()); *到* doc.Load(source.CreateReader()); *幫助...不知道它的限制是什麼。 – CaffGeek 2010-05-21 19:04:23
@Rob Goodwin,50MB,這隻有1條記錄......可能會有更多。 – CaffGeek 2010-05-21 19:06:55