2011-08-29 98 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 –