当我无法提前知道有多少元标签时处理元标签
dealing with meta tags when i cannot know in advance how many there are
我正在尝试分析外部文档中的元标记(特别是 article:tag),其中 url 是由用户传递给我的。
我查看了几个可能的来源,但他们使用标签的方式并不一致:
- 有些不使用标签
- 有些人使用了多个标签
- 有些使用逗号分隔的单个标记 keywords/phrases
- 一些使用带有描述类型条目的标签
我需要做的是将值(无论是跨多个标记、逗号分隔还是描述类型)获取到单个字符串中
我正在使用 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)
{
.....
}
我正在尝试分析外部文档中的元标记(特别是 article:tag),其中 url 是由用户传递给我的。
我查看了几个可能的来源,但他们使用标签的方式并不一致:
- 有些不使用标签
- 有些人使用了多个标签
- 有些使用逗号分隔的单个标记 keywords/phrases
- 一些使用带有描述类型条目的标签
我需要做的是将值(无论是跨多个标记、逗号分隔还是描述类型)获取到单个字符串中
我正在使用 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)
{
.....
}