日期:2014-05-16  浏览次数:21010 次

XML效率问题
这个函数可能会被调用无数次
Private Function GetXmlNodeText(MenuID, StringParameter)
    Dim I As Integer
    For I = 0 To RootNode.selectNodes(".//ID").Length - 1
        If CLng(RootNode.selectNodes(".//ID")(I).Text) = CLng(MenuID) Then
            GetXmlNodeText = RootNode.selectNodes(".//" & StringParameter)(I).Text
            Exit For
        End If
    Next
End Function
意思是当XML中的ID=MENUID时,读取同ID下<stringparameter>标签的值输出。
当初设计XML是为了减轻SQL负担,但现在我在怀疑这样的脚本不是最好的效率,因为如果有1000行,就要遍历1000行,有没有更快捷的XML语句。

还有一个疑问,这虽然省去了SQL的多次查询,节约了SQL资源,但真的值得用XML来实现吗?
倒底是用SQL好,还是XML更好,请高手指点。

------解决方案--------------------
读取XML优化下,直接读取
RootNode.selectSingleNode("//ID[text()=='MENUID']/stringparameter").Text

如果XML文档大的话,每次要打开文件解析,搜索效率也不高
------解决方案--------------------
小XML处理起来速度还是不错。如果大XML,处理起来很慢。