当我无法提前知道有多少元标签时处理元标签

dealing with meta tags when i cannot know in advance how many there are

我正在尝试分析外部文档中的元标记(特别是 article:tag),其中 url 是由用户传递给我的。

我查看了几个可能的来源,但他们使用标签的方式并不一致:

  1. 有些不使用标签
  2. 有些人使用了多个标签
  3. 有些使用逗号分隔的单个标记 keywords/phrases
  4. 一些使用带有描述类型条目的标签

我需要做的是将值(无论是跨多个标记、逗号分隔还是描述类型)获取到单个字符串中

我正在使用 htmlAgility Pack 并能够使用以下代码获取其他值(当我知道只有一个或 none 时):

//get html
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(sourceHtml);
var artAuthor = htmlDoc.DocumentNode.SelectSingleNode("//meta[@property='article:author']");
try
{
    strARTAuthor = artAuthor.Attributes["content"].Value;
}
catch
{
    strARTAuthor = "";
}

而且我怀疑我在某处需要一个 foreach,但我不确定应该如何构造它。

按照

的思路放置一些东西
foreach(htmlDoc.DocumentNode.SelectSingleNode("//meta[@property='article:tag']") in htmldoc)

根本不起作用。

我不知道你观察到的所有类型的 meta 标签,但至少,你需要使用 SelectNodes() 替换 SelectSingleNode() 来制作 foreach 循环工作:

var metas = htmlDoc.DocumentNode.SelectNodes("//meta[@property='article:tag']");
foreach(HtmlNode meta in metas)
{
    .....
}