我有一个xml文档,其中包含带有数字属性的标记。它们按此属性排序。通过二分搜索找到这个标签是否值得?或者对节点的访问不是恒定时间,最好将数据传递给数组?它是在xml库中实现的吗?
答案 0 :(得分:1)
这取决于您如何阅读文档。处理XML文档有两种方法:
第一个由XmlReader
实现,是面向流的,一次处理一个元素,并且不再存储在程序存储器中。
第二个跟随Document Object Model接口:它将整个文档加载到内存中,并允许您查询它而无需回溯文件。在.NET中使用它的最佳方法是LINQ to XML。
根据文档的大小,最好选择一个或另一个,但您必须意识到使用面向流的API进行任何其他线性搜索是不可能的。
据我所知,你无法使用LINQ to XML进行二进制搜索,因为它使用IEnumerable
。您必须获取元素数组,然后在数组上实现二进制搜索。绝对不是完成任务的艰巨任务。