0

我有以下 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方法,但它不起作用,我在谷歌上进行了研究,我发现了这个页面,所以错误解决了与那篇文章相关的问题。但是知道SingleOrDefault方法是行不通的。它抛出NullPointerException (Object reference not set to an instance an object)

我该如何解决问题,或者您可能建议不同的习语在 xml 中设置值数据?

4

2 回答 2

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 文件的位置。目前它没有。

于 2013-08-19T11:02:58.880 回答
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 节点上。感谢所有回复。

于 2013-08-20T10:28:53.780 回答