我有一个与此类似的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>
我想要做的是更新任何没有零件的汽车节点,并添加与本田相同的零件。 (&#34; Chevy&#34;在此示例中不应更新)
我的代码中出现内存不足的异常。
我的代码类似于:
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);
}
}
现在在我的实际数据文件中,我有大约600个空节点,我想将10个子节点附加到。
我不应该为此获得内存不足。
如何解决此错误?
答案 0 :(得分:1)
您的列表车存在一个问题,因为它不会为您提供准确的空车。 试试这个代码吧。
<h3 style="color:#00bfff;margin:-14px 0 16px 0px" class="inline" *ngIf="data.for == 'next'">{{data.bannerText}}<sup><small>{{data.super}}</small></sup></h3><span class="NotinStockGrey" > {{data.textOne}} </span><span style="color:#00bfff">{{data.textTWo}}</span>
答案 1 :(得分:0)
几乎与Ankit的答案相同:
private void DoIt()
{
using (StreamReader sr = new StreamReader(@"M:\StackOverflowQuestionsAndAnswers\XMLStuff_42582050\XMLStuff_42582050\sample.xml", true))
{
XDocument xDoc = XDocument.Load(sr);//load your xml
var allCars = xDoc.Root.Elements("car");//get a list of all the cars
var carToUse = allCars.Where(x => x.Attribute("name").Value == "Honda").FirstOrDefault();//pick the one car to use
var hondaParts = carToUse.Descendants("part");//get the parts of the car to use
var carswithNoparts = allCars.Where(x => x.HasElements == false).ToList();//get all the cars with no parts
foreach (var car in carswithNoparts)//iterate through the cars with no parts
{
car.Add(hondaParts);//add the honda parts
}
xDoc.Save(@"M:\StackOverflowQuestionsAndAnswers\XMLStuff_42582050\XMLStuff_42582050\out.xml");//save output
}
}