2012-01-11 50 views
2

有沒有簡單的方法來更新xml項目的一個節點?我有這個:使用LINQ,更新xml項目中的一個節點

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

我需要更新userid#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

您可以使用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"); 
+0

我給它一個鏡頭。謝謝! – JonHiggens 2012-01-11 23:38:16