我在使用C#将元素添加到XML文件时遇到了问题。我在我的diff目录中有我的App.config
文件。所以我使用LINQ来检索我想要的值并从TextBoxes中设置值。使用C#添加键值XML元素
<appSettings>
<add key="Something" value="false" />
<add key="UserName" value="user0001" />
<add key="Password" value="123456" />
<add key="Environment" value="" />
<add key="DBUserName" value="DBname23" />
<add key="DBPassword" value="12345678" />
</appSettings>
以上是我的XML文件。我能够检索UserName
和Password
的值并将其设置为加密的值。下面我做的方式显示:
var doc1 = XDocument.Load(appConfigFile1);
var list1 = from appNode in doc1.Descendants("appSettings").Elements()
where appNode.Attribute("key").Value == "UserName"
select appNode;
var list2 = from appNode in doc1.Descendants("appSettings").Elements()
where appNode.Attribute("key").Value == "Password"
select appNode;
var list3 = from appNode in doc1.Descendants("appSettings").Elements()
where appNode.Attribute("key").Value == "DBUserName"
select appNode;
var list4 = from appNode in doc1.Descendants("appSettings").Elements()
where appNode.Attribute("key").Value == "DBPassword"
select appNode;
var element1 = list1.FirstOrDefault();
var element2 = list2.FirstOrDefault();
var element3 = list3.FirstOrDefault();
var element4 = list4.FirstOrDefault();
element1.Attribute("value").SetValue(txtbox1);
element2.Attribute("value").SetValue(txtbox2);
element3.Attribute("value").SetValue(txtbox3);
element4.Attribute("value").SetValue(txtbox4);
doc1.Save(appConfigFile1);
的要求是这样的,如果从XML文件中的元素之一被删除时,我应该能够创建具有键和值相同的元素。
实施例:请与下面比较上面的XML:
<appSettings>
<add key="HasUI" value="false" />
<add key="Password" value="123456" />
<add key="Environment" value="" />
<add key="DBUserName" value="DBname23" />
<add key="DBPassword" value="12345678" />
</appSettings>
上方元件用户名缺失。那么,如何创建一个XML元素,如 <add key="UserName" value="" />
并将其设置为XML文件中的相同位置?
我在C#中加载XML文件时遇到的错误是NullReferenceException。
请帮帮我。
为什么它必须是为了?我只是在我的XML戳(我实际上做我的PowerShell的这一点) – jcolebrand 2012-07-24 21:16:14
你想改变app.config或只是把一个默认值,当你没有在app.config中的值? – Clueless 2012-07-24 21:18:36
@jcolebrand嘿!我不需要这样做,我已经编辑了这个问题 – user1410658 2012-07-24 21:20:28