解析包含自关闭标记的html片段时:
var text = @"<tag /> and another <tag />";
var parser = new HtmlParser();
var originalHtml = parser.Parse(text);OuterHtml的结果输出是:
<tag> and another <tag></tag></tag>我知道anglesharp不会在没有自定义格式化程序的情况下“呈现”自结束标记,但是考虑到输入,这个输出是预期的吗?
我希望这样的事情:
<tag></tag> and another <tag></tag>发布于 2017-12-11 23:24:45
这与AngleSharp无关,而是与HTML5规范有关。自闭只允许在少数元素上(而且主要是为了向后兼容性-实际上在适当的HTML5中,您永远不会自我关闭,而是使用隐式自结束,即更喜欢<img>而不是<img />,<meta>而不是<meta />)。
所有这些都在编写中:由于您提供的标记(tag)是未知的,因此它不是异常(异常列表很短--上面提到的两个例外都在这个列表中)。如果要使用与自定义标记类似的标记,请使用div。
现在比较使用的输出
var text = @"<div /> and another <div />";至
var text = @"<img /> and another <img />";您应该看到,后者(使用img)将获得预期的输出(序列化方式不同,但生成的DOM将等效),而div将类似于当前输出。
重要的是要记住: HTML似乎是XML的一个子集,但实际上并非如此。它也不是一个超集。HTML在一段时间前就开始偏离了,而HTML5只是通过提供一种通用的方法来处理任何类型的意外标记,从而最终在解析器方面带来了理智。
希望这能有所帮助!
https://stackoverflow.com/questions/39454606
复制相似问题