2011-08-29 100 views
1

我有一個XML文件是這樣的:使用LINQ to XML解析屬性

<users> 
    <user name="user" password="123" email="[email protected]"/> 
</users> 

我需要寫代碼的屬性值複製到一個對象類型變量,它適合我無法找到任何我需要。我已經成功編寫的部分代碼是:

public static UserInfo GetUser() 
{ 
    XDocument users = XDocument.Load(FilePath.UserConfigurationPath); 

    UserInfo usersvar = new UserInfo(); 
} 

這裏我必須返回對象並將其與文本框值進行比較。

任何人都可以請告訴我如何將值複製到對象?

+2

「返回d對象」 - 嚴重? :) – JohnD

+2

@JohnD不要嘲笑別人的英語技能。 –

+1

使用谷歌和文檔這是一個非常簡單的任務。你試過什麼了? –

回答

3

解析所有用戶:

IEnumerable<UserInfo> GetUsers() 
{ 
    XDocument users = XDocument.Load(path); 

    return from u in users.Descendants("user") 
      select new UserInfo 
      { 
       Name = (string)u.Attribute("name"), 
       Password = (string)u.Attribute("password"), 
       Email = (string)u.Attribute("email") 
      }; 
} 

IEnumerable<UserInfo> users = GetUsers(); 
UserInfo userUser = users.FirstOrDefault(u => u.Name == "user"); 

如果該文件只包含一個用戶或要分析準確第一:

XElement userElement = users.Descendants("user").FirstOrDefault(); 
if (userElement != null) 
{ 
    UserInfo user = new UserInfo 
    { 
     Name = (string)userElement .Attribute("name"), 
     Password = (string)userElement .Attribute("password"), 
     Email = (string)userElement .Attribute("email") 
    }; 
} 
+0

這些逗號應該在你的類型轉換後出現在那裏嗎? –

+0

@Saad:這是一個錯字 – abatishchev

+0

是的,我想編輯把它們放進去,你沒有注意到它們。無論如何+1 –