You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Html-Agility-Pack获取HTML标签的ISO语言代码

获取HTML标签的lang属性值(HtmlAgility-Pack)

嗨,我来帮你搞定这个问题!你的代码现在拿的是<html>标签内部的所有文本内容,这显然不是你要的lang属性值,我们来调整一下:

正确的实现代码

var web = new HtmlWeb { UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/10.0" };
var doc = web.Load(url);
// 先选中html节点
var htmlNode = doc.DocumentNode.SelectSingleNode("//html");
string langCode = null;

// 避免空引用异常,先判断节点是否存在
if (htmlNode != null)
{
    // 从节点的Attributes集合中获取lang属性
    var langAttribute = htmlNode.Attributes["lang"];
    if (langAttribute != null)
    {
        langCode = langAttribute.Value;
    }
}

// 现在langCode就是你要的ISO语言代码,比如"en"、"zh-CN"等

关键说明

  • 你之前用InnerText是错误的:这个属性会返回标签包裹的所有文本内容,而不是标签本身的属性值。
  • 关于你提到的「DocumentNode没有Attributes属性」:这大概率是个误解——doc.DocumentNode属于HtmlNode类型,它肯定有Attributes属性。如果编辑器没提示,建议检查一下HtmlAgility-Pack的版本是否过旧,或者重启一下IDE试试。
  • 增加空判断很重要:如果页面的html标签没有lang属性,或者页面结构异常找不到html节点,空判断能避免程序抛出空引用异常。

内容的提问来源于stack exchange,提问作者Tobias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:28:53