c# -检查从XML文件创建的列表中是否存在值

本文关键字:列表 是否 存在 文件创建 检查 XML | 更新日期: 2023-09-27 18:09:44

我有一个小型的WinForm应用程序,它是一个基本的壁纸刮板。它可以让用户将壁纸"列入黑名单",这样它就再也不会被使用了。当被列入黑名单时,壁纸的URL、标题和ID将被添加到一个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;
}

c# -检查从XML文件创建的列表中是否存在值

看起来您的列表没有被正确填充。尝试从XDocument对象中使用Descendants方法。

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