0

こんにちは、 XSLTを使用してXMLを変換するときに深刻な問題に直面しています。

System.Xml.Xsl.XslTransform XSLTR = new System.Xml.Xsl.XslTransform();
XSLTR.Transform(XPathNavigator input, XsltArgumentList args, TextWriter output);

20.000 行の XML を入力しました。次のエラーがスローされます。

System.OutOfMemoryException: タイプ 'System.OutOfMemoryException' の例外がスローされました。System.Text.StringBuilder.ToString() で System.IO.StringWriter.ToString() で

誰でもこの問題を解決するための提案をすることができますか? よろしくお願いします。

4

1 に答える 1

3

変換結果を文字列に格納しないようにしてください。変換結果としてファイルが必要な場合は、メソッドのオーバーロードが発生し、 :Transformへの書き込みが可能になります。FileStream

XslCompiledTransform proc = new XslCompiledTransform(); 

proc.Load("sheet.xsl"); 

using (FileStream fs = File.OpenWrite("result.xml")) 
{ 
  proc.Transform(xmlDocumentInstance, null, fs);
}

XmlDocument結果としてが必要な場合は、次のように実現できます。

XmlDocument resultDoc = new XmlDocument();

using (XmlWriter xw = resultDocument.CreateNavigator().AppendChild()) 
{ 
  proc.Transform(xmlInputDocumentInstance, null, xw); 
  xw.Close();
}
于 2012-07-24T12:10:45.763 に答える