我有以下XML:
<appsettings>
<add key="MDXQueryDirectory" value="" />
<add key="URLPrefix" value="/Manager" />
</appsettings>
和代码:
XElement doc = XElement.Load(@"config_path");
var element = doc.Elements("add")
.SingleOrDefault(x => x.Attribute("key").Value == "MDXQueryDirectory");
element.SetAttributeValue("value", txtMDXQueryDirectory.Text);
我想将txtMDXQueryDirectory文本框数据分配给MDXQueryDirectory appSsetting。首先我使用Single
方法,但它不起作用,我在谷歌上研究了我发现这个page所以错误解决了相关的文章。但是知道SingleOrDefault
方法不起作用。它抛出NullPointerException (Object reference not set to an instance an object)
如何解决问题,或者您可以建议在xml中设置值数据的不同习惯用法?
答案 0 :(得分:4)
您需要更改要选择要更新的元素的查询,它应该是:
XDocument doc = XDocument.Load(@"config_path");
var element = doc.Descendants().Elements("add")
.SingleOrDefault(x => x.Attribute("key").Value == "MDXQueryDirectory");
element.SetAttributeValue("value", txtMDXQueryDirectory.Text);
doc.Save(@"config_path");
获取文件时,您还应该使用XDocument
而不是XElement
。
注意: XDocument.Load(@"config_path")
- 应指向XML文件的位置。目前它没有。
答案 1 :(得分:0)
string config_file = @"config_file_path";
var element = doc.Element("appSettings").Elements("add")
.SingleOrDefault(x => x.Attribute("key").Value.ToString() == "MDXQueryDirectory");
element.SetAttributeValue("value", txtMDXQueryDirectory.Text);
doc.Save(@"config_file_path");
此代码块工作正常。我认为这个问题与我身边的xml节点有关。感谢所有回复。