接続文字列を変更したい XML ドキュメントがあります。foreach ループを実行し、この例で LocalSqlServer の値を変更するにはどうすればよいですか?
<connectionStrings>
<clear />
<add name="Localip" connectionString="Data Source=db01;Initial Catalog=TestA;Integrated Security=True;"
providerName="System.Data.SqlClient" />
<add name="LocalSqlServer" connectionString="Data Source=db02;Failover Partner=db01;Initial Catalog=TestB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
<add name="ServerAp" connectionString="Data Source=LAPTOP;Initial Catalog=testc;Integrated Security=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>
これは私が試したものですが、コンテンツ全体ではなく値を変更したいだけです。この例では、次のように変更します。
<add name="LocalSqlServer" connectionString="Data Source=db02;Failover Partner=db01;Initial Catalog=TestB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
<add name="LocalSqlServer" connectionString="Data Source=db07;Failover Partner=db07;Initial Catalog=TestB;Integrated Security=True;"
providerName="System.Data.SqlClient" />
これは私が試したことです:
System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
xmlDocument.Load(@"C:\xml.xml");
XmlNodeList elemList = xmlDocument.GetElementsByTagName("connectionStrings");
for (int i = 0; i < elemList.Count; i++)
{
foreach (XmlNode chldNode in elemList[i].ChildNodes)
{
Console.WriteLine(chldNode.Name.ToString());
if (chldNode.Name.ToString() == "add")
{
foreach (XmlAttribute xmlAtt in chldNode.Attributes)
{
if (xmlAtt.Value == "LocalSqlServer")
{
xmlAtt.InnerXml = "MyNewValue";
xmlDocument.Save(@"C:\xml2.xml");
break;
}
}
}
}
}