Читать атрибут XML VBA

Я пытаюсь получить атрибут одного узла в VBA, но не могу управлять им с помощью DOM

XML выглядит следующим образом:

    <?xml version="1.0" encoding="utf-8"?>
       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <soap:Body>
             <GetUserInfoResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">
                <GetUserInfoResult>
                   <GetUserInfo>
                      <User ID="16" Name="David" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="17" Name="Gal" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="18" Name="Netzer" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="3" Name="More" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="20" Name="Alon" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="21" Name="Dan" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                      <User ID="708" Name="Yaron" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                </GetUserInfo>
             </GetUserInfoResult>
          </GetUserInfoResponse>
       </soap:Body>
    </soap:Envelope>

Я просто пытаюсь получить значение атрибута ID. Любая помощь будет оценена.

это тот же вопрос, что и в следующей ссылке: Читайте XML-атрибут VBA с небольшими изменениями! как вы видите в файле XML, существует более одного пользователя, поэтому следующий ответ не подходит,

Try:

(Include a reference to Microsoft XML v3, I saved your xml to a file on my desktop)

    Dim xmlDoc As DOMDocument30
    Set xmlDoc = New DOMDocument30
    xmlDoc.Load ("C:\users\jon\desktop\test.xml")

    Dim id As String
    id = xmlDoc.SelectSingleNode("//GetUserInfo/User").Attributes.getNamedItem("ID").Text

как я могу узнать имя пользователя, что его идентификатор "21"?

очень рад, если кто-то может мне помочь

1 ответ

Решение

Это сработало для меня:

Dim oDoc As New MSXML2.DOMDocument30
Dim el As Object
Dim XML As String

XML = ActiveSheet.Range("B1").Value 'for testing....

oDoc.validateOnParse = True
oDoc.LoadXML XML  '<< using LoadXML to load from a string
                  '   use Load if you're reading from a file

'select the User node with ID=21
Set el = oDoc.SelectSingleNode("//GetUserInfo/User[@ID=""21""]")

If Not el Is Nothing Then
    Debug.Print el.getAttribute("Name")
Else
    Debug.Print "user id not found!"
End If
Другие вопросы по тегам