我创建了一个更新XML中某些属性的函数,但如果index为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 :(得分:2)
您的代码存在的问题是总是选择第一个Setting
元素:
<Setting updateChecker="1" />
此元素只有一个属性,因此如果index大于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;
答案 1 :(得分:0)
每个设置节点只有一个属性,因此0是唯一有效的索引。