2012-03-02 3 views
1

でLINQでXMLのクエリ?この場合、私は、「管理者」「ドキュメント」とは何種類ある次のXMLファイルを考えると属性

Dim authGroup As XElement = XElement.Parse(myXMLDoc.OuterXml) 
    Dim foundUser As IEnumerable(Of XElement) = From i In authGroup.Elements Where i.Attributes("name") = "admin" Select i 

    'How can I determine if the user was found? 
    Dim p As String = ...... (get the password from foundUser) 

答えて

2
Dim doc As XElement = 
    <users> 
     <user name="admin" password="foobar" roles="Admin,Guest" /> 
     <user name="guest" password="foobar" roles="Guest" /> 
    </users> 
Dim userName = "admin" 

Dim result = 
    doc.Descendants("user")             _ 
     .Where(Function(user) CType(user.Attribute("name"), String) = userName) _ 
     .SingleOrDefault 

If result IsNot Nothing Then 
    ' user found ' 
    Dim pw = CType(result.Attribute("password"), String) 
    ' do something with pw ' 
End If 
+0

ように、その名前の属性を持つノードを見つけたいですか?子孫関数が見つかりません。 – WhiskerBiscuit

+0

これはXMLリテラル(宣言なし)の 'XElement'として返されます。 –

2
Dim root As XElement = XElement.Load("users.xml") 
Dim admin As XElement = root.Elements().FirstOrDefault(Function(u) u.Attribute("name").Value = "admin") 
If admin IsNot Nothing Then 
    Dim password As String = admin.Attribute("password").Value 
End If 
関連する問題