XPATH效率求解
以下为遍历,函数是正确的,但我需要优化,从而得到更快的效率,比如xpath或者其它方法,SQL就免了。注意此函数支持递归哟。
Public Function GetAllSubMenuID1(MenuID, ListMethod)
Dim StringTemp, I
StringTemp = CStr(MenuID)
If ListMethod = "" Then ListMethod = GetXmlNodeText(MenuID, "MenuListMethod")
For I = 0 To RootNode.selectNodes(".//ID").Length - 1
If CLng(RootNode.selectNodes(".//MenuParentID")(I).Text) = CLng(MenuID) And CLng(RootNode.selectNodes(".//MenuListMethod")(I).Text) = CLng(ListMethod) Then
StringTemp = StringTemp & "," & GetAllSubMenuID1(RootNode.selectNodes(".//ID")(I).Text, ListMethod)
End If
Next
GetAllSubMenuID1 = StringTemp
End Function
此函数说明:遍历整个XML,当MenuParentID=Menuid并且MenuListMehot=listmethod时,将ID值传给函数,再对ID递归查询,看看其下有没有子菜单。
结构为
<SiteMenu>
<Item>
<ID/>
<MenuParentID/>
<MenuListMethod/>
</Item>
<Item>
<ID/>
<MenuParentID/>
<MenuListMethod/>
</Item>
<Item>
<ID/>
<MenuParentID/>
<MenuListMethod/>
</Item>
</SiteMenu>
[解决办法]
取 当MenuParentID=Menuid并且MenuListMehot=listmethod时, ID值
RootNode.selectSingleNode("//Item[MenuParentID='Menuid' and MenuListMethod='listmethod']/ID").Text
ID递归查询,看看其下有没有子菜单。什么意思? MenuParentID=上面返回的ID?
RootNode.selectNodes("//Item[MenuParentID='xxxID']")