anglesharp - AngleSharp 结果的 html 编码
问题描述
我正在使用 AngleSharp,当我解析 html 输入时,我从外部 html 中得到了这样的结果:
<p><textarea>one<p>two</textarea></p>
这是我的代码:
string input = "<body><p><textarea>one<p>two";
var parser = new HtmlParser();
var document = parser.Parse(input);
var htmlOutput = document.Body.OuterHtml;
我预计结果将是:
<p><textarea>one</textarea></p><p>two</p>
任何人都可以帮助我!
解决方案
这是官方 HTML 规范中定义的标准行为。标签切换到新的textarea
解析状态并且不会自动关闭。它需要遇到textarea
关闭标签才能关闭。这种新的解析状态基本上忽略了所有保留字符(例如,<
),这导致您看到的序列化表示使用它们的编码值。
所以问题不在于编码(这只是一个序列化表示),而是 textarea 没有关闭,现在将所有(假设?)子项放在 textarea 中作为原始输入。
不幸的是,您在这里无能为力 - 您需要关闭 textarea。所有浏览器(因此规范的初始注释)都以相同的方式看待它 - 所以这不是 AngleSharp 独有的。
HTH!
推荐阅读
- ios - 使用 AVPlayer 调整视图底部的视频
- python - python中的“双重自由或腐败(顶部)”是什么意思?
- javascript - 如何使用通过 XML 文件搜索的 JavaScript 执行搜索功能?
- node.js - Next JS 生产路线
- svelte - 如何在 Sapper.js 中使离线数据存储工作?
- ruby-on-rails - Rails 6.0.3 控制器测试错误
- python - 当我的网格不是正方形时,我的索引失败
- javascript - node.js 中的顺序 HTTP 发布请求
- c++ - GCC 10.2 中是否缺少 std::basic_istringstream 的构造函数,如果是,我如何使用自定义分配器构造一个?
- c++builder - 项目迁移后未解决的外部问题