我一直在寻找SO并发现许多Q& A可能是同一类型的问题,但我不能让我工作,我做错了。
当我提取某个<meta
标签时,我就是这样做的
HtmlNode clnode =
htmlDoc.DocumentNode.SelectSingleNode("//meta[@http-equiv='content-type']");
这项工作很好,除了它不匹配
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
我试过使用像这样的小写()函数,
HtmlNode ctnode =
htmlDoc.DocumentNode.SelectSingleNode("//meta[lower-case(@http-equiv)='content-type']");
但它不起作用。
我使用的是最新的HtmlAgilityPack
。
我该如何解决这个问题? 有没有更好的方法?
答案 0 :(得分:4)
如果你想使用xpath选择,据我所知HtmlAgilityPack
使用XPath 1.0,所以你需要诉诸一些丑陋的黑客,例如:
HtmlNode clnode = htmlDoc.DocumentNode.SelectSingleNode("//meta[translate(@http-equiv,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='content-type']");
或者你可以简单地使用LINQ:
var clnode= htmlDoc.DocumentNode
.Elements("meta")
.SingleOrDefault(el => el.Attributes["http-equiv"].Value.ToLower() == "content-type");