#c# #xml #visual-studio-2010 #c#-4.0
#c# #xml #visual-studio-2010 #c #-4.0
Вопрос:
Ниже приведен мой конфигурационный XML-файл, в котором у меня есть несколько имен пользователя и паролей.Из этого мне нужно выбрать xml-узлы по username
значениям атрибутов.
<Authentication>
<auth Userame="username1" Password ="xxxxxx"/>
<auth Userame="username2" Password ="xxxxxxx"/>
<auth Userame="username3" Password ="xxxxxx"/>
</Authentication>
Что я пытаюсь, так это то, что мне нужно выбрать узел с username2 и обновить значение пароля для этого узла в xml.Я использую XmlDocument
и вижу множество примеров с XDocument для выбора атрибута.Возможно ли выполнить это с помощью XmlDocument на C #.
В настоящее время я работаю с одним узлом, и для одного узла я реализовал, как показано ниже,
XmlDoc.SelectSingleNode("Settings/Authentication/auth").Attributes["Password"].Value = password;
XmlDoc.Save(path);
Пожалуйста, помогите мне в этом.
Комментарии:
1. Есть ли у вас элемент настроек, для которого аутентификация является дочерней? Я попробовал ваш пример, но с («Аутентификация / авторизация») вместо («Настройки / Аутентификация / авторизация»). и это работает
2. @Igor Да,аутентификация является дочерним элементом элемента Settings.
3. …и в чем проблема с вашим кодом?
4. @Igor можете ли вы рассказать мне, как это сделать с помощью xmldocument.
5. @har07 , мне нужно выбрать узел с именем пользователя2 и обновить значение пароля для этого узла в xml.
Ответ №1:
Небольшая модификация части XPath вашего кода выполнит эту работу :
var username = "username2";
var xpath = String.Format("Settings/Authentication/auth[@Userame='{0}']", username);
XmlDoc.SelectSingleNode(xpath)
.Attributes["Password"]
.Value = password;
Комментарии:
1. Как динамически присваивать значение текстового поля вместо имени пользовательа2. Я должен динамически присваивать значение username2 и обновлять пароль.
2. пробовал так «XmlDoc.SelectSingleNode(«Settings/Authentication/auth[@Userame=» username «]»).Attributes[«Password»].Value; » получение NullReference Execption.
3. обновил мой ответ, вы можете изменить
username
переменную на любое динамическое значение, которое вы хотите..