2011-03-14 185 views
3

我試圖讓VBA單個節點的屬性,但使用DOM讀取XML屬性VBA

的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="" LoginName="login" Email="" Notes="" IsSiteAdmin="False" IsDomainGroup="False" /> 
      </GetUserInfo> 
     </GetUserInfoResult> 
     </GetUserInfoResponse> 
    </soap:Body> 
</soap:Envelope> 

我基本上只是試圖獲得ID屬性的值。任何幫助,將不勝感激。

回答

12

嘗試:

(包括對Microsoft XML v3的一個參考,我救了你的XML在我的桌面上的文件)

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 
0

我嘗試使用類似的代碼加載和提取從網絡屬性服務提供的XML文件。事實證明,除非將xDoc.async屬性設置爲false,否則xDoc.Load()會立即返回,然後代碼的其餘部分將浪費。