0

現在、私のDALメソッドの1つは、ExecuteXmlReaderコマンドを使用して、StringBuilderオブジェクトを読み取って追加し、XMLを文字列として返します。ToString()メソッドがStringBuilderで呼び出されると、メモリ不足の例外がスローされるため、これは非常に大きなファイル(200MB以上)を処理するための最良の方法ではないことに気付きました。

遵守する必要のある特定の制約があります-XMLReaderをDALから返すことはできません(db接続が開いたままになるなど)。このXMLはファイルに書き込まれ、さまざまな理由でフォーマットを維持する必要があります。現在、XMLTextWriterのWriteRawを使用しています。その目的のための方法。

大きなXMLファイルでこれらすべてを機能させるためにDALから返すのに最適なデータ型は何でしょうか?データセット、メモリストリーム、バイト配列を使用するオプションを検討しましたが、それぞれに欠点があります。私はベストプラクティスを探しています。いくつかのコードサンプルが役立つでしょう。

4

1 に答える 1

0

XDocumentを使用して、xmlファイルで作業を行うことができます。linq to xmlを使用して、要素をクエリできます。例を以下に示します。

XDocument document = XDocument.Load("http://someurl.com/data.xml");

var elements = from element in document.Descendants("SomeElement")
               select element;

Console.WriteLine(elements.First().Value);

これでメモリ不足の例外も発生する場合(私はそうなると思います)、次の投稿を参照してください。

http://james.newtonking.com/archive/2007/12/11/linq-to-xml-over-large-documents.aspx

XDocumentクラスの詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

そしてここ

http://www.hookedonlinq.com/Print.aspx?Page=LINQtoXML5MinuteOverview

幸運を!

于 2012-04-07T07:34:08.800 に答える