如何更新XML上的第二个元素的属性?

时间:2012-11-06 07:34:58

标签: c#-4.0 linq-to-xml

我是否知道如何使用linq更新第二个元素的属性到xml?我写了一些代码,但它不起作用,它只更新用户属性....我很抱歉问这个简单的问题。

我的XML:

<Settings>
<Settig>
<User id="1" username="Aplha"/>
<Location Nation="USA" State="Miami" />
<Email>user1@hotmail.com</Email>
</Setting>
</Settings>

我的Cs:

public static void saveSetting(MainWindow main)
    {
        XDocument document = XDocument.Load("Setting.xml");
        IEnumerable<XElement> query = from p in document.Descendants("User")
                                      where p.Attribute("id").Value == "1"
                                      select p;


        foreach (XElement element in query)
        {               
             string i = "New York";
             element.SetAttributeValue("State", i);
        }

        document.Save("Setting.xml");
    }

1 个答案:

答案 0 :(得分:2)

您想要选择Setting元素;您仍然可以选择id=1,如下所示:

IEnumerable<XElement> query = from p in document.Descendants("Setting")
                                  where p.Element("User").Attribute("id").Value == "1"
                                  select p;

然后在更新之前选择Location元素:

foreach (XElement element in query)
{    
    element.Element("Location").SetAttributeValue("State", "New York");           
}