我有類似這樣的XML:將子節點附加到空節點列表。 (走出內存異常)
<root>
<car name="Honda">
<part name="part1" />
<part name="part2" />
<part name="part3" />
</car>
<car name="Ford" />
<car name="Subaru" />
<car name="VW" />
<car name="Chevy">
<part name="part5" />
<part name="part6" />
<part name="part7" />
</car>
<car name="BMW" />
</root>
我想要做的就是更新一個沒有零件並添加本田具有相同部件的任何轎廂節點。 (這個例子中的「Chevy」不應該更新)
我在代碼中發現內存不足異常。
我的代碼類似於:
using (StreamReader sr = new StreamReader(@"C:\MyFile.xml", true))
{
XDocument xDoc = XDocument.Load(sr);
var allCars = xDoc.Descendants("root").Descendants().ToList();
var carToUse = allCars.Where(x => x.Attribute("name").Value == "Honda").FirstOrDefault();
var listCars = carToUse.Descendants("car").ToList();
var fullCars = allCars.Where(x => x.Descendants("part").Any()).ToList();
var emptyPermissions = allCars.Where(x => x.Descendants("part").Any() == false).ToList();
foreach (var perm in emptyPermissions)
{
perm.Add(listCars);
}
}
現在,在我的實際數據文件,我有我要追加10個孩子節點,以約600空節點。
我不應該得到一個內存不足的例外。
如何解決此錯誤?
'xDoc.Descendants( 「根」)後裔()'是指所有後代(包括零部件)使它'xDoc.Descendants( 「根」 ).Elements()'。我不知道這是否會解決任何問題,但首先修復您的代碼。你的'listCars'變量在你的例子中是空的......在提問之前調試 – EpicKip