[英]C# how to foreach loop an XML document and modify a value
我有一個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;
}
}
}
}
}
var xDoc = XDocument.Load(@"C:\xml.xml")
var node = xDoc.XPathSelectElement("//add[@name='LocalSqlServer']");
node.Attribute("connectionString").Value = "some value";
或如SteveB所建議
var node = xDoc.XPathSelectElement("//connectionStrings/add[@name='LocalSqlServer']");
使用System.Xml.Linq
:
var xml = XDocument.Load(fileName);
var localSqlServer = xml.Descendants("connectionStrings").Elements("add").FirstOrDefault(o => o.Attribute("name").Value == "LocalSqlServer");
if (localSqlServer != null)
localSqlServer.SetAttributeValue("connectionString", "Your New Connection String");
xml.Save(fileName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.