используя linq, обновите один узел в элементе xml - PullRequest
2 голосов
/ 11 января 2012

Есть ли простой способ обновить один узел элемента 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 Ответ

1 голос
/ 11 января 2012

Вы можете использовать Первый

        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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...