Xml分析的空间和时间估计

时间:2011-04-20 04:02:42

标签: c# .net xml parsing xml-serialization

我必须开发一个函数,它将字符串(xml字符串)作为输入并返回解析结果(以对象格式)。

我是C#.Net的新手,所以从网上我发现有很多方法可以做到这一点:

  1. Xml序列化
  2. Xml TextReader
  3. 的XmlDocument
  4. XDocument(依此类推)
  5. 我想知道哪种方式更好(在时间和空间方面),考虑到这个函数必须每秒解析并平均10-20个字符串(平均1000-2000个字符)。

3 个答案:

答案 0 :(得分:2)

XmlTextReader逐行遍历文件,因此它可以处理非常大的文件,并且在您不需要解析整个xml时非常有用。

XmlDocument在加载文件时构建一个DOM,这很容易浏览,虽然在大xml上耗费时间\ mem。

答案 1 :(得分:1)

对于您计划处理的数据量,几乎与您使用的内容无关。编写工作/看起来很好而且衡量的代码 - 如果你的每秒约40K的estamate是合理的,你可以发现所有方法之间存在任何可衡量的差异。

XmlSerialzation是最容易使用的,如果您可以选择XML的格式,则需要的代码量最少。 XmlDocument和XDocument是顶级XmlReader上的更高级别概念,因此如果您寻找最高速度,原始XmlReader将为您提供最多选项。

答案 2 :(得分:0)

只需使用MSXML即可。分析和衡量性能,然后决定是否需要替代解决方案。

using MSXML;
DOMDocument30 doc = new DOMDocument30();
doc.async = false;
if (doc.load("somefile.xml"))
{
  // process document here
}

一旦进行了一些具体测量,您就可以开始查看信息,例如在this msdn article但你可能根本没有发现它是必要的。