在.NET 3.5中处理非常大的XML文件的“推荐”方法是什么?
对于写作,我想一次生成一个元素,然后追加到文件中。
为了阅读,我同样想要一次读取一个元素(按照与写入的顺序相同)。
我有一些想法如何使用字符串和File.Append,但.NET 3.5提供XML Api来处理任意大的XML文件?
答案 0 :(得分:7)
没有详细说明,这不容易回答。 .NET提供了不同的方法来处理XML文件:
基于你所说的XmlReader / XmlWriter组合似乎是最好的方法。
答案 1 :(得分:1)
正如Dirk所说,使用XmlWriter / XmlReader组合听起来是最好的方法。它可能非常冗长,如果您的XML文件相当复杂,则会变得非常笨拙。最近我必须做一些类似的东西,有一些严格的内存限制。 My SO question might come in handy.
但就个人而言,我发现这个方法here on MSDN blogs非常容易实现,它可以整齐地处理附加到XML文件末尾而没有片段。
答案 2 :(得分:0)
尝试从* .xml中创建* .xsd文件。您可以从* .xsd文件生成* .cs文件。之后,将* .xml文件加载到您的对象。它应该比整个文件占用更少的内存。
VS2010有一个插件,提供从* .xsd生成* .cs文件的选项。它被称为XSD2Code。在该插件中,您可以选择装饰属性以进行序列化。对于名为Settings的* .xsd文件,您将获得Settings.cs。你不会做这样的事情。
StreamReader str = new StreamReader("SomeFolder\\YourFile.xml");
XmlSerializer xmlSer = new XmlSerializer(typeof(TcpPostavke));
Settings m_settings = (Settings )xmlSer .Deserialize(str);
您可以使用Linq查询对象列表。