繁体   English   中英

更改xml属性C#

[英]Change xml attribute c#

需要更改name = "SqlServer"属性

像xml一样的配置文件,不是来自我的项目

<connectionStrings>
    <add name="SqlServer"
             connectionString="Data Source=192.168.1.1; Initial Catalog=s; Application Name=s; MultipleActiveResultSets = true; Pooling=True; User ID=1111;Password=1111;" />       

    <add name="SqlServer_WinAuthentication"
             connectionString="Data Source=.; Initial Catalog=MeterShop; Integrated Security=True; Application Name=MeterShop; MultipleActiveResultSets = true; Pooling=True;" />

    <add name="SqlServer_SqlAuthentication"
             connectionString="Data Source=.; Initial Catalog=MeterShop; User ID=1; Password=1; Application Name=1; MultipleActiveResultSets = true; Pooling=True;" />
</connectionStrings>

使用XML Linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication70
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml =
            "<connectionStrings>" +
                "<add name=\"SqlServer\"" +
                         " connectionString=\"Data Source=192.168.1.1; Initial Catalog=s; Application Name=s; MultipleActiveResultSets = true; Pooling=True; User ID=1111;Password=1111;\" />" +
                "<add name=\"SqlServer_WinAuthentication\"" +
                         " connectionString=\"Data Source=.; Initial Catalog=MeterShop; Integrated Security=True; Application Name=MeterShop; MultipleActiveResultSets = true; Pooling=True;\" />" +
                "<add name=\"SqlServer_SqlAuthentication\"" +
                         " connectionString=\"Data Source=.; Initial Catalog=MeterShop; User ID=1; Password=1; Application Name=1; MultipleActiveResultSets = true; Pooling=True;\" />" +
            "</connectionStrings>";

            XElement connectionStrings = XElement.Parse(xml);

            List<XAttribute> names = connectionStrings.Descendants("add").Select(x => x.Attribute("name")).ToList();
            foreach (XAttribute name in names)
            {
                name.Value = "123";
            }
        }

    }
}

有很多方法可以实现,我更喜欢Linq而不是Xml

XDocument doc = XDocument.Parse(s);
var target = doc.Descendants("connectionStrings")           
                .SingleOrDefault(e => e.Element("add").Attribute("name").Value == "SqlServer");

一旦获得目标元素,就可以更新该值。

target.Element("add").Attribute("name").Value = "any thing you want";
doc.Save("filename"); // Save the file after your changes.

工作实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM