你可以运用一些技术来克服DOM中处理大文件的问题。一种技术是Simple API for XML(SAX),它采用单向的遍历方式。David Megginson从W3C xml-dev邮件列表成员们得到很大帮助,开发出SAX。当找到不同的节点时,会触发事件。处理不同种类节点的内容处理器会捕捉到这些事件。这种方法是高效、快捷的,它代表了push模式,但是当你在解析过程中要记录状态信息时,事情会变得复杂。
而.NET平台引入了拉的模式来解析XML文档,与SAX的Push模式正好相反。这可以做到进行快速高效的单向遍历,并且无需缓存。想了解为什么.NET不支持SAX,请看“Diving Into the Unknown”。
if (nav.HasAttributes) {
for (int i=0;i<nav.AttributeCount;i++) {
nav.PushPosition(); //Save current position on golfer node
nav.MoveToAttribute(i);
//Process the attribute as appropriate
nav.PopPosition(); //Return to last saved
}
}