[英]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.