2016-10-22 3 views
3

Я пытаюсь ограничить дублируемую запись в файле XML, а ниже - файл XML.Избегайте дублировать запись в xml-файле C#

<?xml version="1.0" standalone="yes"?> 
<Info> 
<Details> 
<ID>Ryan</ID> 
</Details> 
<Details> 
<ID>Danny</ID> 
</Details> 
</Info> 

Теперь, если я попытаюсь добавить Райана или Дэнни снова к идентификатору, я должен предупредить, что имя пользователя уже существует.

Я использую приведенный ниже код, и он не работает. strName - это строка и имеет значение имени пользователя для добавления. Может ли кто-нибудь давать предложения?

XDocument xDoc = XDocument.Load(Server.MapPath("~/Info.xml")); 
bool userExistsAlready = xDoc.Descendants("Details").Any(x => (string)x.Attribute("ID") == strName); 
if (userExistsAlready) 
{ 
    //alert 
} 

ответ

1

Попробуйте так:

bool userExistsAlready = xDoc.Descendants("Details") 
          .Elements("ID") 
          .Any(x => x.Value == "Ryan"); 

Проблема с кодом является то, что он пытается получить доступ к атрибуту ID. Но ID - это фактически другой элемент XML, содержащийся внутри элемента <Details>.

+0

Как я могу проверить другие элементы, называемые 'department' with и condition. Я пробовал несколько кодов и не мог его получить. – vicky

+0

bool usertExists = xDocss.Descendants («Детали»). Элементы («ID»). Любой (x => x.Value == Name) && xDocss.Descendants («Подробности»). Элементы («Пароль»). (y => y.Value == Pwd); – vicky

+0

@ vicky Ну, это еще один вопрос. Не рекомендуется отвечать на вопросы в комментариях. Попробуйте написать другое сообщение с соответствующим XML-файлом. –

0

Вы можете установить ID как атрибут Детали, а затем проверить, существует ли эта запись с помощью метода XmlDocument GetElementByID или реализовать цикл for, который проверяет свойство InnerText каждого элемента массива, полученного в результате вызова метода GetElementsByName ,

Смежные вопросы