【问题标题】:XmlDocument VS XmlReader [duplicate]XmlDocument VS XmlReader [重复]
【发布时间】:2013-10-21 06:46:28
【问题描述】:

在解析相当大的 XML 文件(其中的大小或元素数量)方面,哪个是最好的 XmlDocument 或 XmlReader(在性能上)

【问题讨论】:

  • 这不是问的好方法。请阅读FAQHow to Ask
  • 因为他们的工作不同,所以比较他们的表现是没有意义的。

标签: c# xml vb.net performance parsing


【解决方案1】:

问题不应该是哪个更快,但哪个对您的情况有利。

XmlDocument 将整个文档加载到内存中,并允许您对其进行修改和查询内容。毕竟,您可以将修改后的文档保存回文件。

XmlReader 提供对 XML 文档内容的只读和只转发访问,一次只有一个元素。

您必须选择适合您的情况的描述。

您还应该知道,在 .NET 中还有另一种处理 XML 文档的方法,称为 LINQ to XML。

【讨论】:

  • 所以如果我想编辑或添加更多元素到 XML 文件中,我将不得不将所有元素加载到内存中?我可以使用 XML to LINQ 来编辑 XML 文件吗?
  • 是的,你可以。我真的建议你这样做,因为它比旧的 XmlDocument 更容易使用。
  • 并且 XmlDocument 丢失了行号(例如,对 xsd 架构验证有用)
【解决方案2】:

另一个选项可能是将 XML 加载到数据集中:

Public Function GetXMLDataset() As DataSet
    Try
        Dim ds As New DataSet
        Dim xd As New XmlDocument
        xd.LoadXml(txtXML.Text)
        ds.ReadXml(New XmlNodeReader(xd), XmlReadMode.InferSchema)
        Return ds
    Catch ex As Exception
        MsgBox(ex.Message)
        Return Nothing
    End Try
End Function

在这个 sn-p 中,XML 已经读入文本框,但您可以开发其他方法来获取 XML。

您可能想要定义“相当大”,因为读取整个文件可能不切实际。

【讨论】:

  • -1: DataSet 并非在所有情况下都有效。实际上,它只适用于 XML 匹配关系数据模型的情况。
  • 在所有情况下都不起作用,尤其是对于“XML”数据 - 您没有很好地定义基本条件。 DateSet 在某些情况下肯定会起作用。
  • XmlReader 肯定适用于所有情况。
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多