我正在寻找用于读取大型xml文件的类。 C#XmlReader类的快速实现XmlTextReader提供了“仅转发访问”。这是什么意思?
答案 0 :(得分:2)
“仅转发”表示-您只能遍历数据。这种方法的主要优点是无需存储先前的信息(导致内存使用量较低),并且无需读取诸如TCP流之类的不可搜索的源即可(与文件不同,您不能搜索)允许随机访问的流)。
对于基于表的结构(例如从数据库读取),“仅转发”非常容易看到-“仅转发”阅读器将使您仅检查“当前”记录或移至下一行。将无法通过此类读取器访问已经看到的行中的数据(您必须将数据保存在读取器之外才能访问它)。
对于XmlReader,由于它会从文本流中生成树形结构,因此稍微有些混乱。从流读取的角度来看,“仅向前”意味着您将无法获取读取器已经查看过的任何数据(例如,根节点基本上是文件的第一行,或者当前节点的父节点,因为它必须更早在文件中)。
但是从XML树生成的角度来看,“仅转发”可能会造成混淆-它以深度优先的顺序生成元素(因为它们在XML文本中的显示方式)意味着“ next”元素不是您想要在树中看到的元素(特别是如果您希望使用广度优先的访问方式,例如“这本书的所有作者的姓名”)。
请注意,XmlReader允许您随时访问当前节点的所有属性,因为它将它们视为“当前元素”的一部分。