Как использовать C# для изменения определенного элемента в XML?

Как изменить значение элемента <Password></Password> для определенной ноды с помощью языка программирования C# в данном xml-файле?
  • 5 ноября 2023 г. 17:50
Ответы на вопрос 2
Для изменения значения элемента в определенной ноде XML с помощью C# можно использовать классы из пространства имен `System.Xml`.

Вот пример кода, который демонстрирует, как изменить значение элемента `<Password></Password>` для определенной ноды в XML-файле:

```csharp
using System;
using System.Xml;

class Program
{
    static void Main()
    {
        string xmlFilePath = "path/to/xml/file.xml";
        string targetNodePath = "/Root/Node"; // Путь к целевой ноде
        string newPasswordValue = "newPassword"; // Новое значение для элемента

        // Загрузка XML-документа
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlFilePath);

        // Нахождение целевой ноды
        XmlNode targetNode = xmlDoc.SelectSingleNode(targetNodePath);

        // Проверка, что целевая нода существует
        if (targetNode != null)
        {
            // Нахождение элемента <Password></Password> внутри целевой ноды
            XmlNode passwordElement = targetNode.SelectSingleNode("Password");
            
            // Проверка, что элемент <Password></Password> существует
            if (passwordElement != null)
            {
                // Изменение значения элемента
                passwordElement.InnerText = newPasswordValue;

                // Сохранение изменений в XML-файле
                xmlDoc.Save(xmlFilePath);
            }
        }
    }
}
```

В этом примере мы загружаем XML-документ с помощью класса `XmlDocument`, находим целевую ноду с помощью метода `SelectSingleNode()`, затем находим элемент `<Password></Password>` внутри этой ноды и изменяем его значение, присваивая новое значение свойству `InnerText`. Наконец, сохраняем изменения обратно в XML-файл с помощью метода `Save()`.
var document = new XmlDocument();
document.LoadXml(@"

    
        1
        hihihaha
        P@ssW0rd
    
    
        2
        blabla
        P@ssW0rd
    
    
        3
        login
        P@ssW0rd
    
");

var login = "blabla";
var foundNode = document.SelectSingleNode($"//Client/Login[text()='{login}']");

if (foundNode is not null)
{
    foundNode = foundNode.ParentNode;
    
    var passwordNode = foundNode.SelectSingleNode("./Password");
    passwordNode.InnerText = "new password";
    document.Save("result.xml");
}
Похожие вопросы