首页 > 解决方案 > 使用 C# 显示和修改 xml 数据

问题描述

C# 编程新手,我现在有点卡住了。我将如何创建一个简单的程序,让我在 connectionStrings 中提取和显示数据源值。让我修改ID和密码?我是否在解析的正确轨道上

Document X = XDocument.Load("C:\Users\Odd_Creature\Desktop\SecureConfig\\UserProfiles\UserInfo.exe.config")

    var configuration= X.Element("configuration").Element("connectionStrings");
    var location = configuration.Descendants("").Attributes("").FirstOrDefault().Value;
doc.Save(xmlfile);

XML文件

<configuration>
      <configProtectedData />
      <system.diagnostics />
      <system.windows.forms />
      <uri />
      <appSettings>
        <add key="GenerateProfile" value="true" />
        <add key="TestScore" value="30" />
        <add key="TestApplicationName" value="User Account" />
      </appSettings>
      <connectionStrings>
        <add name="MyExample.database" connectionString="data source=.\SQLEXPRESS;initial catalog=wadb;integrated security=false;encrypt=true;trustservercertificate=true;User Id=Tester;Password=Test1;"
          providerName="System.Data.SqlClient" />
      </connectionStrings>

标签: c#asp.netxmlparsing

解决方案


这将是从 XML 文件中解析连接字符串的蛮力方法。

    static void Main(string[] args)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("settings.xml");

        string connectionStrings = xmlDoc.GetElementsByTagName("connectionStrings")[0].InnerXml;

        string tag = "connectionString=\"";
        string connectionString = connectionStrings.Substring(connectionStrings.IndexOf(tag) + tag.Length);

        string[] tokens = connectionString.Split(';');
        Console.WriteLine(tokens.FirstOrDefault(t => t.Contains("data source=")));
        Console.WriteLine(tokens.FirstOrDefault(t => t.Contains("User Id=")));
        Console.WriteLine(tokens.FirstOrDefault(t => t.Contains("Password=")));
    }

输出将是:

数据源=.\SQLEXPRESS

用户 ID=测试者

密码=Test1

使用更多代码,您应该能够编辑这些字段,然后使用 xmlDoc.Save() 更新您的更改。


推荐阅读