[英]Set element attribute value in XML with Linq
我有以下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
方法,但是它不起作用,我在google上进行了研究,发现此页面可以解决与该文章相关的错误。 但知道SingleOrDefault
方法不起作用。 它抛出NullPointerException (Object reference not set to an instance an object)
我该如何解决问题,或者您建议使用其他习惯来在xml中设置值数据?
您需要在选择要更新的元素的地方更改查询,它应该是:
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文件的位置。 目前还没有。
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节点上。 感谢您的所有回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.