J'utilisais cette méthode d'extension pour transformer de très gros fichiers xml avec un xslt.Transformation de gros fichiers XML
Malheureusement, j'obtiens une exception OutOfMemoryException sur la ligne source.ToString().
Je me rends compte qu'il doit y avoir un meilleur moyen, je ne suis pas sûr de ce que ce serait?
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());
}
}
}
Pensées? Solutions? Etc.
MISE À JOUR: Maintenant que cela est résolu, j'ai des problèmes avec la validation du schéma! Validating large Xml files
Quelle est la taille de la taille? –
J'ai déjà trouvé changer * doc.LoadXml (source.ToString()); * en * doc.Load (source.CreateReader()); * aide ... pas sûr de ce que sont ses limites. – CaffGeek
@Rob Goodwin, 50MB, et c'est seulement 1 enregistrement ... il y en aura probablement plus. – CaffGeek