2016-09-30 3 views
2

У меня есть небольшое приложение WinForm, которое является основным скребком для обоев. Он имеет возможность для пользователя «занести в черный список» обои, чтобы он никогда не использовался снова. Когда черный список, обои URL, название и ID добавляются в файл XML, которая находится в следующем формате:C# - Проверка наличия значения в списке, созданном из файла XML

<?xml version="1.0" encoding="utf-8"?> 
<!--This file stores a list of any wallpapers you blacklist.--> 
<Blacklisted> 
    <Wallpaper> 
    <URL>http://i.imgur.com/OU3v9H6.jpg</URL> 
    <Title>Gran Via Madrid Wallpaper [1920x1080]</Title> 
    <ThreadID>54fsi7</ThreadID> 
    </Wallpaper> 
    <Wallpaper> 
    <URL>http://i.imgur.com/TLXJmGB.jpg</URL> 
    <Title>The Golden wallpaper HD [1920*1080]</Title> 
    <ThreadID>55366b</ThreadID> 
    </Wallpaper> 
</Blacklisted> 

Когда новые обои приобретаются, есть быстрая проверка, чтобы увидеть, если обои URL находится в занесенный в черный список файл XML. Если это так, то оно не используется и найдены новые обои. Мой код для проверки, что обои занесены в черный список, на самом деле не вызывает никаких ошибок, однако остальная часть кода после проверки не выполняется, поэтому я считаю, что что-то не так с моим процессом проверки, и код просто «застревает». Вот мой код для проверки файла XML:

string url = "http://example.url/image.jpg"    
XDocument xml = XDocument.Load("Blacklisted.xml"); 
var list = xml.Root.Elements("URL").Select(element => element.Value).ToList(); 

if(list.Contains(url)) 
{ 
    updateStatus("Wallpaper is blacklisted."); 
    return; 
} 
+1

Вы использовали отладчик, чтобы узнать, что произойдет после 'if (list.Contains (url))'? это проблема, возникающая при вводе условного блока или пропуске? что вы подразумеваете под «кодом, который просто« застревает »? – slawekwin

ответ

2

Не похоже, что ваш список заполняется правильно. Попробуйте использовать метод Descendants из вашего объекта XDocument.

var list = xml.Descendants("URL").Select(x=> x.Value).ToList(); 
+0

Спасибо, это работает. :) Это также не помогло, что мой XML-файл называется «Черный список» вместо «Черный список»! Do'h! – Rawns

+0

Мы все это сделали. Рад, что смог помочь. :-) –

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