I am trying to get the attribute of a single node in VBA, but can't manage it using DOM when i want it to be case-insensitive
VBA:
Dim oDoc As New MSXML2.DOMDocument30
Dim el As Object
Dim XML As String
XML =("C:\........")
oDoc.validateOnParse = True
oDoc.Load XML
dim Name as String
Name= "yaron"
'select the User node with Name="Yaron"
Set el = oDoc.SelectSingleNode("/GetUserInfo/User[@Name='" & Name & "']")
'Set el = oDoc.SelectSingleNode("/GetUserInfo/User[matches(@Name, 'Name ' ,'i')]")
'Set el = oDoc.SelectSingleNode("/GetUserInfo/User[lower-case(@Name)='" & Name & "']")
If Not el Is Nothing Then
Debug.Print el.getAttribute("LoginName")
Else
Debug.Print "user id not found!"
End If
XML:
<GetUserInfo>
<User ID="16" Name="DAVID" LoginName="login1"/>
<User ID="17" Name="GAL" LoginName="login2"/>
<User ID="18" Name="YARON" LoginName="login3"/>
</GetUserInfo>
2 lines in comment two different ways i tried after sow solutions in this site, but apparently those solution won't work for **VBA-**Excel**** i get run-time error '-2147467259(80004005); 'unknown method
Since
XPATH 2.0functions are not possible becauseMSXMLdoes not support XPath 2.0*grr*the only possibility to be case insensitive with comparing attribute contents will be using translate function.This needs at least
Microsoft XML, v4.0, betterMicrosoft XML, v6.0. TheMicrosoft XML, v3.0(MSXML2.DOMDocument30) will not suit.If attribute values are uppercase always then
will also fit.