你如何转换一个太大而无法使用任何.net转换类的xml?

时间:2009-10-04 01:32:05

标签: .net xslt

我正在使用.NET XmlReader,因为xml文件太大而无法使用DOM或其​​他内存类,但我需要能够以某种方式从XmlReader中的当前位置向后移动xml层次结构。有没有办法做到这一点? 我有时需要回到一级父级来检索内容。我可以在解析时缓存一些xml,但是这些是大的xml文件所以我不想存储大量数据,因为我通过xml解析可能会超出内存,或者因为它将数据添加到不断增长的内容而开始减慢应用程序的速度记忆结构。但也许这是我唯一的办法。

是否有可以处理此问题的xml解析器?

1 个答案:

答案 0 :(得分:1)

听起来你应该只能缓存一堆当前元素......我怀疑你的XML文件是否有足够深的嵌套 成为一个问题。每次读取元素的开头时,将其推入堆栈。每次读取元素的结尾时,都将其从堆栈中弹出。

你还没有真正告诉我们你需要从祖先节点获得什么信息,但只要你需要祖先节点 - 而不是兄弟姐妹等 - 这应该相当容易。

小心自我关闭元素,例如<foo attr="value" /> - 您需要将它们推入堆栈,执行任何必要的处理,然后再次弹出它们,即使您不会看到单独的“结束元素”事件