由于内存要求,我必须使用XmlReader
来处理xml文件,所以我是这个类的新手。在我烘焙异常之前,如何使用XmlReader执行嵌套读取?
我的意思是,我位于xml文件的中间,位于某个节点<p>
- 我只想阅读关于</p>
这个<p>
我提及。
当使用递归调用某些处理函数时,这种“嵌套读取”(即不再进行读取)非常有用。正常Read
将继续到文件末尾。
答案 0 :(得分:2)
听起来你正在寻找ReadSubtree
method - 该方法将当前元素视为自己的文档,并返回XmlReader
。关闭该阅读器后,您的原始阅读器将放在阅读元素的结束标记之后。
关于你的问题的一句话:
正常
Read
会一直持续到文件的末尾。
嗯,不是自动如此,但你是对的,需要注意不要超过结束标签,并且没有办法确保其他组件在通过原始阅读器时不会这样做。
使用ReadSubtree
时需要注意的一点是:新阅读器不最初指向元素的开始标记,它将指向开始标记之前的位置。因此,在调用ReadSubtree
后,您通常首先要在子树阅读器上调用Read()
一次。