繁体   English   中英

使用Linq在XML中设置元素属性值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM