Задать вопрос
@WSGlebKavash

Как изменить конкретный элемент XML с помощью C#?

Допустим xml:
<ArrayOfClient>
  <Client>
    <Id>1</Id>
    <Login>hihihaha</Login>
    <Password>P@ssW0rd</Password>
  </Client>
  <Client>
    <Id>2</Id>
    <Login>blabla</Login>
    <Password>P@ssW0rd</Password>
  </Client>
  <Client>
    <Id>3</Id>
    <Login>login</Login>
    <Password>P@ssW0rd</Password>
  </Client>
</ArrayOfClient>
Нужно у ноды с определённым элементом <Login></Login> изменить значение элемента <Password></Password>. Как это сделать на языке программирования C#?
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
var document = new XmlDocument();
document.LoadXml("""
                     <ArrayOfClient>
                     <Client>
                         <Id>1</Id>
                         <Login>hihihaha</Login>
                         <Password>P@ssW0rd</Password>
                     </Client>
                     <Client>
                         <Id>2</Id>
                         <Login>blabla</Login>
                         <Password>P@ssW0rd</Password>
                     </Client>
                     <Client>
                         <Id>3</Id>
                         <Login>login</Login>
                         <Password>P@ssW0rd</Password>
                     </Client>
                 </ArrayOfClient>
                 """);
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");
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы