我正在开发一个应用程序,我必须在其中读取特定的 xml 节点(“进度”节点,来自几个大的(3meg'ish)文件。
我正在通过 TextReader 和 XDocument 执行此操作,如下所示
TextReader reader = null;
reader = new StreamReader(Filename);
XDocument objDoc = XDocument.Load(reader);
var progressElement = objDoc.Root.Element("Progress");
var lastAccessTime = progressElement.Element("LastTimeAccessed").Value;
var user = progressElement.Element(("LastUserAccessed").Value;
var lastOpCode = progressElement.Element("LastOpCodeCompleted").Value;
var step = progressElement.Element("StepsCompleted").Value;
我相信,XDocument 会在执行任何其他操作之前将整个文件加载到内存中。但是,我不需要那个!我知道该节点将成为文件中的第一个节点。
是否有任何类型的“搜索”xml 解析器不首先缓存整个文件?
为上述属性解析 10 个文件大约需要 15 秒(这里的无线网络很糟糕)。
如果您只想要速度,XmlReader 是您的最佳选择。它一次读取一个节点,从头开始。最大的限制是您不能向后返回或使用对 XML 文档的任何随机访问。
我是一名优秀的程序员,十分优秀!