2016-12-14 3 views
0

私はVBAでの単一ノードの属性を取得しようとしていますが、XMLは次のようになりDOM読むのXML属性VBA

を使用して、それを管理することができません。

<?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属性の値を取得しようとしています。どんな助けもありがとう。

これは、次のリンクと同じ質問です。 Read XML Attribute VBA 小さな変更あり!あなたはその次の答えは収まらない1 USER 、より多くのがある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 

は、どのように私は自分のIDが「21」であるユーザーの名前を知っていることができますか?誰かが私に

+0

最初の 'GetUserInfo'ノードを取得し、その後、サブノードから選択します。 – Comintern

+0

@Comintern私はそれを取得しない、あなたはあなたの答えを説明してくださいできますか?または例を挙げるか? – David

+0

[この回答](http://stackoverflow.com/a/29726379/4088852)を参照してください。あなたの答えは – Comintern

答えて

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 
+0

ありがとう@Tim Williams !!!! – David

+0

oDoc.LoadXML XML ---> oDoc.Load XML – David

+0

回答を編集できません:( – David