gpt4 book ai didi

ms-access - VBA 搜索 40mb xml 文件或将该文件的二进制数组转换为字符串以进行搜索的最快方法

转载 作者:行者123 更新时间:2023-12-04 21:07:42 26 4
gpt4 key购买 nike

你好,我在 MS Access 后面运行 VBA。我需要从一个 40mb 的文件中反复搜索和检索数据。它太大而无法加载到字符串变量中。我已经将它加载到二进制数组中(我可能会很轻松地添加),但我不知道如何利用这种格式......我似乎无法掌握一次通过数组循环一个字节在寻找一个字符串...... 所以我放弃了这个想法......(但我愿意学习如何利用该策略)。我正在研究基于 FilesystemObject 的搜索;这是我目前所拥有的:

我得到节点的开始(x)和结束(y),然后将其放入 FLat 变量中。

 Set ts = FSO.OpenTextFile(DLookup("gsgtver", "Eramdat", "EramID = 1"), ForReading, False, TristateFalse)
x = InStr(1, ts.ReadAll, ">" & sFirst & "<")

ts.Close

Set ts = FSO.OpenTextFile(DLookup("gsgtver", "Eramdat", "EramID = 1"), ForReading, False, TristateFalse)
y = InStr(x, ts.ReadAll, "</FixRecord")

ts.Close

Set ts = FSO.OpenTextFile(DLookup("gsgtver", "Eramdat", "EramID = 1"), ForReading, False, TristateFalse)
FLat = Mid(ts.ReadAll, x, y - x)

ts.Close

如果我不必这样做 10 到 120 次,我会把它归结为“可接受的等待状态”,但您可以猜到,这是 Not Acceptable 。关于如何更巧妙地执行此操作的任何建议?

最佳答案

我看到您正在寻求圆滑,所以我建议将您的 XML 文件加载到 XML 文档对象中。为什么将 XML 信息视为字符串“汤”,而实际上它已经整齐地组织在易于搜索的层次结构中?

Dim xmlDoc As Object
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.async = False ' Don't ask.
xmlDoc.Load "C:\myfile.xml"
'Voilà, your XML is loaded and parsed, ready to be searched.

参见文档形式 XML DOMDocuments here .

然后您可以使用 XPath 符号(教程 here)随机 Access XML 文档中的数据,例如

Set someElement = _
xmlDoc.selectSingleNode("//MyElementName[@MyAttributeName = 'blabla']")
theStringINeed = someElement.Text

引号中的内容是 XPath。我相信您可以使用单个 XPath 语句检索您正在寻找的东西。如果您告诉它要查找的内容,XML 对象就会为您进行搜索。这就是它的用途。

这确实是 Access XML 格式信息的正确方法。相比之下,你真的只是让自己的生活变得悲惨。

关于ms-access - VBA 搜索 40mb xml 文件或将该文件的二进制数组转换为字符串以进行搜索的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com