AngleSharp - 处理自闭标签

时间:2016-09-12 16:13:31

标签: c# html html-parsing anglesharp

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

var text = @"<tag /> and another <tag />";
var parser = new HtmlParser();
var originalHtml = parser.Parse(text);

OuterHtml的结果输出是:

<tag> and another <tag></tag></tag>

我知道angularharp不会&#34;呈现&#34;没有自定义格式化程序的自闭标签,但考虑到输入,这是预期的输出吗?

我希望有类似的东西:

<tag></tag> and another <tag></tag>

1 个答案:

答案 0 :(得分:1)

这与AngleSharp无关,而是与HTML5规范无关。只允许在几个元素上进行自我关闭(主要是为了向后兼容 - 实际上在正确的HTML5中你永远不会自我关闭,而是使用隐式自我关闭,即更喜欢<img>而不是{{1 }和<img />超过<meta>)。

所有写的都是:因为你提供的标签(<meta />)是未知的,所以它不是例外(例外列表很短 - 上面提到的两个都在这里列表)。如果您想对自定义标记使用类似标记,请使用tag

现在比较使用

的输出
div

var text = @"<div /> and another <div />";

您应该看到后者(使用var text = @"<img /> and another <img />"; )获得预期的输出(序列化不同,但生成的DOM将是等效的),而img将看起来像当前输出。

重要的是要记住:HTML可能看起来像是XML的一个子集,但实际上并非如此。它也不是超集。 HTML开始偏离前一段时间,HTML5只是通过提供一种处理任何意外标记的常用方法,最终实现了解析器方面的理智。

希望这有帮助!