如何在 xml 文件上保存属性值?

How to save attribute value on xml file?

我正在尝试在我的 xml 文件中保存一个值。在下面的代码中,行 "s.Attribute("Value").Value = value; break;"执行并保存文件,但不会更改属性的值

     public void CustomSettingXML_WriteValue(string key, string value)
    {

        XDocument doc = XDocument.Load(xmlFile);

        var elements = from x in XElement.Load(xmlFile).Elements("Item") select x;

        foreach (var s in elements)
        {
            if (s.Attribute("Text").Value == key)
            {
                s.Attribute("Value").Value = value; 
                doc.Save(@xmlFile);                    
               break;
            }
        }
    }

事实上有两件事可能需要改变。

a) 您正在使用 XDocument.Load 和 XElement.Load 阅读 Xml。更改时使用的是 Elements,保存时使用的是 XDocument。

b) 由于 XML 中的层次结构是 (Items.Item),因此最好使用 Descendants 来解析元素。

完整代码

public void CustomSettingXML_WriteValue(string key, string value)
{
    XDocument doc = XDocument.Load(xmlFile);
    var elements = from x in doc.Descendants("Item") select x;
    foreach (var s in elements)
    {

        if (s.Attribute("Text").Value == key)
        {
            s.Attribute("Value").Value = value; 
            doc.Save(@xmlFile);                    
           break;
        }
    }
}