我正在尝试将内容写入xml文件。我有一个功能:
bool WriteValueTOXML(string pstrValueToRead, string pstrValueToWrite)
{
try
{
XmlTextReader reader = new XmlTextReader("config.ini");
XmlDocument doc = new XmlDocument();
doc.Load(reader);
reader.Close();
XmlNode oldNode;
XmlElement root = doc.DocumentElement;
oldNode = root.SelectSingleNode(@"/settings/" + pstrValueToRead);
oldNode.InnerText = pstrValueToWrite;
doc.Save("config.ini");
return true;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.Message);
return false;
}
}
当我尝试在oldNode中设置InnerText时(oldNode.InnerText = pstrValueToWrite;),抛出NullReferenceException,并显示消息“对象引用未设置为对象的实例”。
我想写的文件在这里:config.ini
答案 0 :(得分:2)
oldNode = root.SelectSingleNode(@"/settings/" + pstrValueToRead);
必须返回null。在该行代码之后放置一个断点并检查是否是这种情况。如果是这样,请调整xpath,使其返回实际节点。
答案 1 :(得分:0)
此示例适用于以下假设:
XmlDocument doc = new XmlDocument();
using(XmlTextReader reader = new XmlTextReader(@"C:\Temp\config.ini"))
{
doc.Load(reader);
}
XmlElement root = doc.DocumentElement;
XmlNode oldNode = root.SelectSingleNode(@"/settings/database");
oldNode.InnerText = "Blah Blah2";
doc.Save(@"C:\Temp\config.ini.out");
这假设您要将数据库标记的内部文本your path to database
更新为其他内容。