首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngleSharp -处理自关闭标记

AngleSharp -处理自关闭标记
EN

Stack Overflow用户
提问于 2016-09-12 16:13:30
回答 1查看 524关注 0票数 2

解析包含自关闭标记的html片段时:

代码语言:javascript
复制
var text = @"<tag /> and another <tag />";
var parser = new HtmlParser();
var originalHtml = parser.Parse(text);

OuterHtml的结果输出是:

代码语言:javascript
复制
<tag> and another <tag></tag></tag>

我知道anglesharp不会在没有自定义格式化程序的情况下“呈现”自结束标记,但是考虑到输入,这个输出是预期的吗?

我希望这样的事情:

代码语言:javascript
复制
<tag></tag> and another <tag></tag>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-11 23:24:45

这与AngleSharp无关,而是与HTML5规范有关。自闭只允许在少数元素上(而且主要是为了向后兼容性-实际上在适当的HTML5中,您永远不会自我关闭,而是使用隐式自结束,即更喜欢<img>而不是<img /><meta>而不是<meta />)。

所有这些都在编写中:由于您提供的标记(tag)是未知的,因此它不是异常(异常列表很短--上面提到的两个例外都在这个列表中)。如果要使用与自定义标记类似的标记,请使用div

现在比较使用的输出

代码语言:javascript
复制
var text = @"<div /> and another <div />";

代码语言:javascript
复制
var text = @"<img /> and another <img />";

您应该看到,后者(使用img)将获得预期的输出(序列化方式不同,但生成的DOM将等效),而div将类似于当前输出。

重要的是要记住: HTML似乎是XML的一个子集,但实际上并非如此。它也不是一个超集。HTML在一段时间前就开始偏离了,而HTML5只是通过提供一种通用的方法来处理任何类型的意外标记,从而最终在解析器方面带来了理智。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39454606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档