解析包含自闭标记的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>
答案 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只是通过提供一种处理任何意外标记的常用方法,最终实现了解析器方面的理智。
希望这有帮助!