代码之家  ›  专栏  ›  技术社区  ›  Matt Croft

在C中更新XML标记的值#

  •  0
  • Matt Croft  · 技术社区  · 2 年前

    我在C#项目中使用一个XML文件作为主要配置(config.XML)源,因此我需要能够从该文件中读取数据并向其写入数据。包括我的XML的开头,其中包含我想从应用程序中更新的标记。

    <?xml version="1.0" encoding="utf-8"?>
    <root>
        <startupparams>
            <backColor>white</backColor>``` < -- Tag to update
            ``` <foreColor>black</foreColor>
        </startupparams>
        <strings>
            <appTitle>TheCalc</appTitle>
            <appAuthor>Matthew Croft</appAuthor>
            <appGreeting>Welcome</appGreeting>
    

    问题是我对C#和XML集成不太熟悉,在文件中写入(或更准确地说更新)标记是导致我出现问题的过程,因为我无法成功地完成这项工作。

    Console.Write("Background Color: ");
    string background = Console.ReadLine()!;
    Console.WriteLine(background);
    Console.WriteLine();
    Console.Write("Foreground Color: ");
    string foreground = Console.ReadLine()!;
    XmlNodeList backColors = config.GetElementsByTagName("backColor");
    for (int i = 0; i < backColors.Count; i++)
    {
        backColors[i].InnerText = background;
    }
    

    请记住,我已经使用以下方法打开了XML。

    XmlDocument config = new XmlDocument();
    string configFilePath = @"C:\Users\mcroftdev\Documents\TheCalc\config.xml";
    config.Load(configFilePath);
    

    如果您能提供任何建议,我们将不胜感激。提前谢谢!

    1 回复  |  直到 2 年前
        1
  •  1
  •   FJones    2 年前

    xml中的注释使其无效。但你可能只是为了在你的帖子中提供文档。为了测试,我在Notepad++中创建了这个文件。Notepad++可以告诉您XML文件是否包含错误:

    xml

    这是我使用的代码。主要更改是在末尾添加“保存”。使用适当的XML文件并添加Save,代码将按预期工作。

    XmlDocument config = new XmlDocument();
    string configFilePath = @"d:\test.xml";
    config.Load(configFilePath);
    XmlNodeList backColors = config.GetElementsByTagName("backColor");
    for (int i = 0; i < backColors.Count; i++)
    {
      backColors[i].InnerText = "new background";
    }
    config.Save(configFilePath);