使用linq,更新xml项目中的一个节点

时间:2012-01-11 01:56:18

标签: asp.net linq linq-to-xml

是否有一种简单的方法来更新xml项目的一个节点?我有这个:

 <userlist>
  <users>
    <name>bob</name>
    <userid>1</userid>
  </users>
  <users>
   ...etc...

我需要更新用户ID#1中的名称。我有这个(硬编码为了清晰,而不是它的功能):

XDocument userDoc = XDocument.Load(path);

var userList = from users in userDoc.Descendants("userlist")
                  where users.Element("userid").Value == "1"
                  select users;

foreach (XElement user in userList)
{
  user.SetElementValue("name", "Phil");
}

有更好的方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用 First

        var firstUser = (from users in userDoc.Descendants("userlist")
                       where users.Element("userid").Value == "1"
                       select users).First();

        firstUser.SetElementValue("name", "Phil");

userDoc.Descendants("userlist").First( x => x.Element("userid").Value == "1" ).SetElementValue( "name", "Phil");