当尝试更新XML c#时
本文关键字:XML 更新 | 更新日期: 2023-09-27 18:06:00
我目前有一个windows表单应用程序,其中包含一个由用户更新的列表视图。当列表视图更新时,它还会为项目填充和创建XML,并将其存储在一个隐藏的文本框中,直到发送保存请求。
当发送保存请求时,我调用一个函数,该函数写入我的外部配置文件以更新所表示的属性。
总的来说,我正在更新7个设置,但唯一一个失败与NullReferenceException是当我试图更新列表视图和保存XML
//The values I'm passing in are the path to my config file, the setting I am updating (in this case would be RequiredDocuments), and the string value to update.
public static void UpdateConfigFiles(string p_sPath, string p_sSettingName, string p_sValue)
{
bool blnApplyChanges = false;
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.Load(p_sPath);
int iCurrentNode = 0;
for (iCurrentNode = 0; iCurrentNode <= xmlDoc.ChildNodes[1]["applicationSettings"].ChildNodes[0].ChildNodes.Count - 1; iCurrentNode++)
if (xmlDoc.ChildNodes[1]["applicationSettings"].ChildNodes[0].ChildNodes[iCurrentNode].Attributes[0].Value.ToString().ToUpper() == p_sSettingName.ToUpper())
{
//This line is where the exception occurs
xmlDoc.ChildNodes[1]["applicationSettings"].ChildNodes[0].ChildNodes[iCurrentNode].ChildNodes[0].InnerText = p_sValue;
blnApplyChanges = true;
}
if (blnApplyChanges)
{
xmlDoc.Save(p_sPath);
FixBlankXMLValues(p_sPath);
}
}
我已经添加了手表来查看所有不同节点的值,还没有遇到空值,所以我想知道这是否与我构建XML的方式有关。最初,我认为我已经清除了传入值,当我重新绑定我的ListView,但事实并非如此。
下面是一个包含一些编校信息的XML结构示例。
<setting name="RequiredDocuments" serializeAs="String">
</setting>
没有要更新的childNode 'Value'。
xmlDoc.ChildNodes[1]("applicationSettings")。ChildNodes[0] = <Project.Properties.Settings>
xmlDoc.ChildNodes[1]("applicationSettings")childnodes[0]。ChildNodes[iCurrentNode] = <setting name="RequiredDocuments" serializeAs="String">
xmlDoc.ChildNodes[1]("applicationSettings")childnodes [0] childnodes [iCurrentNode] childnodes [0]是零。