【问题标题】:C# Check if XML contains stringC# 检查 XML 是否包含字符串
【发布时间】:2018-10-03 09:35:22
【问题描述】:

我需要列出我的系列,所以我编写了一个小工具,将某个文件夹中的系列名称保存到一个 xml 文件中。 我曾经有一个 txt 文件,但随着时间的推移变得混乱。

此工具会在某个时间点更新 txt 文件中的系列列表。 目前我使用这个代码:

List<string> seriesList = File.ReadAllLines(@"C:\path\series.txt").ToList();
bool contains = seriesList.Contains(series, StringComparer.OrdinalIgnoreCase);
if (contains)
{
    return;
} 
else 
{
    addToList()
}

我的 txt 中的系列名称保存如下:

氪。

NCIS.Los.Angeles.

等等

在我的 xml 文件中,系列名称如下所示:

<?xml version="1.0" encoding="utf-8"?>
<collection>
  <series>Krypton.</series>
  <series>NCIS.Los.Angeles.</series>
</collection>

现在我需要类似上面的“包含”功能。 如果这在没有 for 循环的情况下也能工作,那就太好了。


编辑:(完成)

XDocument xDocSload = XDocument.Load(Directory.GetCurrentDirectory() + @"\settings\series.xml");

var sList = xDocSload.Root.Elements("seriesName").Select(element => element.Value).ToList();

List<string> seriesList = sList;

bool contains = seriesList.Contains(series, StringComparer.OrdinalIgnoreCase);
if (contains)
{
...

【问题讨论】:

  • 那么,反序列化 XML 并检查 collection.Series.Contains("foo")?你的问题到底是什么?
  • 我在这个问题中遗漏了一些东西

标签: c# xml boolean contains


【解决方案1】:

行是字符串。您想查看是否有任何字符串包含子字符串 - 所以只需使用 LINQ 的 Any。

(也去掉了return,让代码更难阅读) var isThere = seriesList.Any(s => s.Contains(series, )); if(!isThere) { addToList(); }

【讨论】:

  • 您的代码基于“seriesList”,其中包含来自 txt 的字符串。我不想再使用txt了。我需要检查xml是否包含某个字符串(系列名称)
  • XDocument xDoc = XDocument.Load(Directory.GetCurrentDirectory() + @"\settings\series.xml");
猜你喜欢
  • 2021-12-20
  • 2015-02-07
  • 2011-01-21
  • 2020-04-15
  • 1970-01-01
  • 2012-06-27
  • 2015-09-29
  • 2014-01-07
  • 2017-12-25
相关资源
最近更新 更多