【发布时间】:2016-11-03 01:15:11
【问题描述】:
当前文档说:
定义是否必须在文档末尾或直接在文档中关闭非关闭节点。 将此设置为 true 实际上可以更改浏览器呈现页面的方式。默认为假。
对不起,我不得不承认我看不懂这一段。具体“结束”是什么? “在文件中”究竟是什么意思?最后一句之前的那句话听起来很不祥。如果该选项设置为 true 并且 html 格式正确,这仍然会影响文档吗?
我查看了源代码,但我不明白发生了什么 - 代码对未设置为 true 的属性做出反应。请参阅HtmlNode.cs,并搜索 OptionAutoCloseOnEnd - 第 1707 行。我还在HtmlWeb.cs 第 1113 和 1154 行发现了一些时髦的代码。太糟糕了,源代码浏览器不显示行号,但在页面中搜索 OptionAutoCloseOnEnd。
您能否举例说明此选项的作用?
我正在使用 HtmlAgilityPack 修复一些错误的 html 并将页面内容导出到 xml。
我遇到了一些格式错误的 html - 重叠标签。这是sn-p:
<p>Blah bah
<P><STRONG>Some Text</STRONG><STRONG></p>
<UL>
<LI></STRONG>Item 1.</LI>
<LI>Item 2</LI>
<LI>Item 3</LI></UL>
注意第一个p标签没有闭合,注意重叠的STRONG标签。
如果我设置 OptionAutoCloseOnEnd 这会以某种方式修复。我试图了解在文档结构中将此属性设置为 true 的确切效果。
这是我正在使用的 C# 代码:
HtmlDocument doc = new HtmlDocument();
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;
// doc.OptionAutoCloseOnEnd = true;
doc.LoadHtml(htmlText);
谢谢!
【问题讨论】:
标签: c# html-agility-pack