私はUR1を介して3GBのXMLファイルを読み込み、すべてのジョブをデータセットに格納しようとしています。 XMLは次のようになります。DataSetに大きなXMLをロードする(OutOfMemory Exception)
<?xml version="1.0"?>
<feed total="1621473">
<job>
<title><![CDATA[Certified Medical Assistant]]></title>
<date>2016-03-25 14:19:38</date>
<referencenumber>2089677765</referencenumber>
<url><![CDATA[http://www.jobs2careers.com/click.php?id=2089677765.1347]]></url>
<company><![CDATA[Broadway Medical Clinic]]></company>
<city>Portland</city>
<state>OR</state>
<zip>97213</zip>
</job>
<job>
<title><![CDATA[Certified Medical Assistant]]></title>
<date>2016-03-25 14:19:38</date>
<referencenumber>2089677765</referencenumber>
<url><![CDATA[http://www.jobs2careers.com/click.php?id=2089677765.1347]]></url>
<company><![CDATA[Broadway Medical Clinic]]></company>
<city>Portland</city>
<state>OR</state>
<zip>97213</zip>
</job>
</feed>
これは私のコード
XmlDocument doc = new XmlDocument();
doc.Load(url);
DataSet ds = new DataSet();
XmlNodeReader xmlReader = new XmlNodeReader(doc);
while (xmlReader.ReadToFollowing("job"))
{
ds.ReadXml(xmlReader);
}
ですが、私は、バインドされた例外のうちのメモリを得ました。 Google で検索し、これを見つけました:
DataSet ds = new DataSet();
FileStream filestream = File.OpenRead(url);
BufferedStream buffered = new BufferedStream(filestream);
ds.ReadXml(buffered);
まだ同じ例外があります。私はXmlTextReaderについても読んでいますが、私の場合はどのように使用するのか分かりません。 なぜ例外が発生しているのかわかりますが、その克服方法はわかりません。
例外の詳細はなんですか? 私はそれが 'OutOfMemoryException'を投げているXmlDocumentかもしれないと思う。なぜなら、大規模なXMLファイルを生成するためのコードをまとめて、十分なデータを生成する前に、私が構築したXmlDocumentオブジェクトを投げているからです。おそらく、ノードの内部コレクション({System.Collections.ListDictionaryInternal.NodeKeyValueCollection})に関連しています。 – Stringfellow
出力は何ですか?私は "すべての仕事が苦しい"と理解していません。 –
@MichaelKay:私の悪い、編集された。私はすべてのジョブをデータセットに保存したいので、後ですべてをデータベーステーブルに保存することができます。 – Iman