更新 XML 个属性

Update XML attributes

我创建了一个函数来更新 XML 中的某些属性,但是如果索引为 0,则更新正常,但如果大于 0,传递的索引超出范围 发生。

    public void updateAtributexml(string value, int index)
    {
        string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        string file = "settings.xml";
        string specificFolder = Path.Combine(folder, "DesktopCleaner");

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.Load(specificFolder + "\" + file);

        XmlNode node = xmlDoc.SelectSingleNode("DesktopCleaner/Settings/Setting");
        node.Attributes[index].Value = value;

        xmlDoc.Save(specificFolder + "\" + file);

    }

我的 xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<DesktopCleaner>
  <Settings>
    <Setting updateChecker="1" />
    <Setting desktopFolder="0" />
    <Setting downloadsFolder="0" />
    <Setting customFolder="0" />
  </Settings>
</DesktopCleaner>

您的每个设置节点只有一个属性,因此 0 是唯一有效的索引。

您的代码的问题在于它总是 选择第一个 Setting 元素:

<Setting updateChecker="1" />

该元素只有一个属性,因此如果索引大于 0,则会出现错误。

所以,而不是:

XmlNode node = xmlDoc.SelectSingleNode("DesktopCleaner/Settings/Setting");
node.Attributes[index].Value = value;

使用:

 XmlNode node = xmlDoc.SelectSingleNode("DesktopCleaner/Settings");
 node.ChildNodes[index].Attributes[0].Value = value;