什么是通过xml进行搜索的最快方法

And*_*ich 4 c# xml search

假设我有一个XML文件,我用作本地数据库,如下所示:

<root>
 <address>
  <firstName></firstName>
  <lastName></lastName>
  <phone></phone>
 </address>
</root>
Run Code Online (Sandbox Code Playgroud)

我有几个问题:
1.在first中包含'er'的XML中寻找地址(或地址)的最快方法是什么?
2. 是否可以在内存中没有完整加载XML文件?

PS我不是在寻找XML文件替代品,理想情况下我需要一个不依赖于XML文件中地址数的搜索.但我是现实主义者,在我看来,这是不可能的.

更新: 我正在使用.net 4
感谢您的建议,但它比实际更科学的任务..我可能正在寻找比linq和xmltextreader更快的方法.

as-*_*cii 10

LINQ to Xml非常好用:

XDocument doc = XDocument.Load("myfile.xml");
var addresses = from address in doc.Root.Elements("address")
                where address.Element("firstName").Value.Contains("er")
                select address;
Run Code Online (Sandbox Code Playgroud)

更新:尝试在StackOverflow上查看这个问题:在xml文件中搜索数据的最佳方法是什么?.

Marc Gravell接受的答案使用SQL索引:

第一:xml文件有多大?XmlDocument不会扩展为"巨大"......但可以处理"大"OK.

第二:您可以将数据放入常规数据库结构(可能是SQL Server Express Edition),索引它,并通过常规TSQL访问吗?这通常会超出xpath搜索范围.同样,如果它是结构化的,SQL Server 2005及更高版本支持分割数据的xml数据类型 - 这允许您在数据库中索引和查询xml数据,而不需要将整个DOM放在内存中(它将xpath转换为关系查询) .

更新2:阅读上一个问题所采用的另一个链接,该链接解释了XML结构如何影响性能:http://www.15seconds.com/issue/010410.htm