2

xsl スタイル シートを使用して xml ファイルを変換する関数があります。それはうまく機能します。しかし、その変換されたファイルを削除しようとすると、次のエラーが発生することがあります: System.IO.IOException: The process cannot access the file

関数は次のようになります。

XslTransform transform = new XslTransform();

transform.Load('xsl_style_sheet');

transform.Transform('fullpath/xmlfilename','fullpath/transformedFileName')

XElement xEle = XElement.Load('fullpath/transformedFileName');

私は xEle で何をしても、最後に 'fullpath/transformedFileName' を削除したいのですが、恐ろしい System.IO.IOException: The process cannot access the file が発生することがあります。

誰でも助けてください。百万の感謝

4

1 に答える 1

2

XslCompiledTranformクラス ( XslTranform は廃止されました) と、XmlReader と XmlWriter を受け入れる Transform のオーバーロードを使用します。それらに対して Dispose を呼び出すことができます。それらは、基になるストリームを閉じて破棄します。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("xsl_style_sheet");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
using(XmlWriter writer = XmlWriter.Create("fullpath/transformedFileName", settings))
{
   using(XmlReader reader = XmlReader.Create("fullpath/xmlfilename"))
   {
     reader.MoveToContent();
     xslt.Transform(reader, writer);
   }
}

using(XmlReader reader = XmlReader.Create("fullpath/transformedFileName"))
{
   XElement xEle = XElement.Load(reader);
   // do all other stuff you need to do here


   // after this the file will be closed
}
于 2013-08-22T18:46:31.167 に答える