选择SingleNode作为小写字母

本文关键字:小写字 SingleNode 选择 | 更新日期: 2023-09-27 18:23:51

我一直在看SO,发现了许多问答;A这可能是同样的问题,但我不能让我的工作,我做错了什么。

当我提取特定的<meta标签时,我会以这种方式

HtmlNode clnode = 
htmlDoc.DocumentNode.SelectSingleNode("//meta[@http-equiv='content-type']");

这项工作很好,只是与不匹配

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

,我试过这样使用lower-case()函数

HtmlNode ctnode = 
htmlDoc.DocumentNode.SelectSingleNode("//meta[lower-case(@http-equiv)='content-type']");

但它不起作用。

我正在使用最新的HtmlAgilityPack

我该如何解决这个问题还有更好的方法吗

选择SingleNode作为小写字母

如果你想使用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");