假设我有一个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
| 归档时间: |
|
| 查看次数: |
20936 次 |
| 最近记录: |