C#を使用してXMLファイルに要素を追加する際に問題が発生しました。App.config
diffディレクトリのどこかにファイルがあります。そのため、LINQを使用して必要な値を取得し、TextBoxから値を設定しています。
<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ファイルの要素の1つが削除された場合に、キーと値を使用して同じ要素を作成できるようにすることです。
例:上記の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です。
私を助けてください。