处理大型Xml文件

墨GFX

知名会员
已加入
2013年2月2日
留言内容
142
编程经验
Beginner
我正在处理大型xml文件,需要一种有效的方式将xml加载到内存中并保存更新....我正在做的是从网页获取数据,每页具有30个或更多字段,一旦我拥有所有字段,程序使用XDocument load ....加载xml。然后保存所有字段。然后转到下一个网页并获取这些字段,然后再次加载xml并保存。

有没有办法一次加载xml,然后继续将新字段保存到其中?

以下是加载和保存xml的代码

 XDocument spiderXml = XDocument.Load(xmlPath);
                            XElement Listing =  new XElement("Listing",          
                                                              new XElement("Position", pos),
                                                              new XElement("ID", splitID[1]),
                                                              new XElement("Title", carTitleFinal),
                                                              new XElement("ListingImages",
                                                                  new XElement("Img0", imageListOne[0]),
                                                                  new XElement("Img1", imageListOne[1]),
                                                                  new XElement("Img2", imageListOne[2])),
                                                              new XElement("Dealer",
                                                                  new XElement("DealerName", dName),
                                                                  new XElement("DealerAddress", dealerAddress),
                                                                  new XElement("DealerPhoneNumber", dPhoneNumber),
                                                                  new XElement("DealerImageLink", dealerImageFinal),
                                                                  new XElement("DealerLink", DealerLink)),
                                                              new XElement("Description", descFinal),
                                                              new XElement("StockNumber", stockNumber),
                                                              new XElement("Price", price),
                                                                new XElement("VehicleLocation",
                                                                  new XElement("Country", country),
                                                                  new XElement("CityState", cityState),
                                                                  new XElement("Zipcode", zip)),
                                                                new XElement("VehicleBasics",
                                                                  new XElement("TrimLevel", trim),
                                                                  new XElement("Odometer", odometer),
                                                                  new XElement("Year", year),
                                                                  new XElement("Vin", vin),
                                                                  new XElement("Style", style),
                                                                  new XElement("Convertible", convertible)),
                                                                new XElement("ExteriorDetails",
                                                                  new XElement("ExteriorColor", exteriorColor),
                                                                  new XElement("ExteriorRestorationHistory", exteriorRestorationHistory),
                                                                  new XElement("ExteriorCondition", exteriorCondition)),
                                                                new XElement("InteriorDetails",
                                                                  new XElement("InteriorColor", interiorColor),
                                                                  new XElement("SeatMaterial", interiorSeatMaterial),
                                                                  new XElement("InteriorCondition", interiorCondition)),
                                                                new XElement("EngineDetails",
                                                                  new XElement("EngineConfig", engineConfig),
                                                                  new XElement("EngineSize", engineSize),
                                                                  new XElement("EngineModifications", engineMods),
                                                                  new XElement("EngineHistory", engineHistory),
                                                                  new XElement("EngineCondition", engineCondition)),
                                                                new XElement("TransmissionDetails",
                                                                  new XElement("TransmissionType", transType),
                                                                  new XElement("DriveTrain", driveTrain)));
                                                              
                            
                            spiderXml.Root.Add(Listing);
                            spiderXml.Save(xmlPath);
                        }


感谢您的任何帮助
-InkedGFX
 

狂暴风暴

知名会员
已加入
2014年8月6日
留言内容
85
地点
南非鲁德普特
编程经验
10+
如果定义了所有字段,则可以考虑使用xml序列化和反序列化。

您可以定义诸如Dealer,VehicleLocation,EngineDetails等类;对于任何像数组(例如图像)的东西,我会使用一个列表<> (List<string>图片)。您将它们组合到类Listing中。

假设您可以在一个xml中包含多个列表,请为其创建一个包含成员List的类。<Listing>.
 
最佳 底部