- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当前文档说:
Defines if closing for non closed nodes must be done at the end or directly in the document. Setting this to true can actually change how browsers render the page. Default is false.
对不起,我不得不承认我不明白这段话。具体“到底”是什么? “在文档中”到底是什么意思?最后一个之前的短语听起来不祥。如果该选项设置为 true 并且 html 格式正确,这是否仍会影响文档?
我查看了源代码,但我不明白发生了什么 - 代码对未设置为 true 的属性作出 react 。参见 HtmlNode.cs ,然后搜索 OptionAutoCloseOnEnd - 第 1707 行。我还在 HtmlWeb.cs 中发现了一些古怪的代码在第 1113 和 1154 行。可惜源代码浏览器不显示行号,而是在页面中搜索 OptionAutoCloseOnEnd。
您能否举例说明此选项的作用?
我正在使用 HtmlAgilityPack 修复一些错误的 html 并将页面内容导出到 xml。
我遇到了一些格式错误的 html - 重叠标签。这是片段:
<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);
谢谢!
最佳答案
当前代码总是在父节点关闭之前关闭未关闭的节点。所以下面的代码
var doc = new HtmlDocument();
doc.LoadHtml("<x>hello<y>world</x>");
doc.Save(Console.Out);
将输出这个(未关闭的 <y>
在父级 <x>
关闭之前关闭)
<x>hello<y>world</y></x>
最初,设置该选项是为了能够生成它(不适用于 XML 输出类型):
<x>hello<y>world</x></y>
以收尾 <y>
设置在文档的末尾(这就是“结束”的意思)。请注意,在这种情况下,您仍然可以获得重叠元素。
这个功能(我承认可能没用)在过去的某个地方被破坏了,我不知道为什么。
备注<p>
标记大小写很特殊,因为它默认由自定义 HtmlElementFlag 控制。这是它在 HtmlNode.cs 中的声明方式:
ElementsFlags.Add("p", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
关于c# - HTML敏捷包: Could someone please explain exactly what is the effect of setting the HtmlDocument OptionAutoCloseOnEnd to true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392309/
我注意到,如果你编写这样的程序: console.log(document); 它显示[object HTMLDocument]。然后,如果你这样做: console.log(HTMLDocument
我正在使用 HTMLDocument 迭代器来尝试迭代 HTMLDocument 中的所有 a 标记。然而,迭代器似乎跳过了嵌套在 p 标签内的 a 标签。例如: some site
我使用 WebClient 获取网页的 html 代码(作为字符串)。 但是我想将它变成一个 HtmlDocument 对象,这样我就可以使用这个类提供的 DOM 特性。目前我知道的唯一方法是使用浏览
这是怎么回事?似乎获得有效 HtmlDocument 对象的唯一方法是复制 mshtml/webbrowser 控件的 Document 属性。但是产卵是sloooooooooooow。我想避免编写自
我试图了解位置/偏移量在 HTMLDocument 中的工作原理。描述了位置/偏移语义 here .我的解释是,这些是由 HTMLDocument 表示的屏幕字符序列中的索引。 考虑来自 the HT
我正在使用 WebClient.DownloadString(url) 通过 URL 获取 html 文档,但是很难找到我要查找的元素内容。在四处阅读的过程中,我发现了 HtmlDocument,它有
我有一个问题。看起来 HTMLEditorKit 只是忽略空格。这是我的示例代码: public class TestEditor extends JFrame { public TestEditor
在我的应用程序中,我想使用已使用 NuGet 安装的 HTMLAgilityPack。但是当我尝试创建 HtmlAgilityPack.HtmlDocument 实例时,我有 "Source not
当我运行以下代码时: import java.io.IOException; import java.io.Reader; import java.io.StringReader; import ja
由于“.NET 中的错误”通常不是问题的真正原因,我想知道我是否遗漏了什么。 我所做的感觉很简单。我正在遍历名为 doc 的 HtmlDocument 中的元素,如下所示: System.Diagno
我有一个 Element 对象,它是一个 HTMLDocument 对象,我想将这个元素的值字符串化。 我想要这个结果克里斯蒂娜·托特 (Christina Toth),药学博士。 D. ======
我想将 Javascript DOM HTMLDcument 转换为可以写入文件的字符串。但是如何将 HTMLDocument 的字符串转换为 xml?! 更新 如果可能的话,我希望看到应用任何动态
这适用于在脚本内设置的 cookie(可能在脚本标签内)。 System.Windows.Forms.HtmlDocument 执行这些脚本并且可以通过其 检索 cookie 集(如 document
我有一个将 HTMLEditorKit 设置为默认 editorKit 的 jTextPane。在 jTextPane 上调用 getDocument 返回一个 HTMLDocument 。我可以遍历
出于某种原因,当我尝试写入 HtmlDocument 时,它会去掉我给它的字符串的一些(不是全部)引号。 看这里: HtmlDocument htmlDoc = Webbrowser1.Documen
我正在尝试使用 System.Windows.Forms.HTMLDocument在控制台应用程序中。首先,这可能吗?如果是这样,我如何将网页从网络加载到其中?我正在尝试使用 WebBrowser ,
Uri url = new Uri("http://localhost/rgm.php"); WebClient client = new WebClient(); string html = cli
我正在尝试注入(inject)一些 javascript 代码以防止弹出 javascript 错误,但我在 WPF 中找不到 HTMLDocument 和 IHTMLScriptElement: v
经过一些谷歌搜索,我没有找到任何满足我需要的东西。我想按原样保存当前网页。我的意思是,很多网页执行了 Javascript 并更改了 CSS,因此在一些用户交互之后,网页可能与第一次加载到浏览器时的网
没有办法像 IE WebBrowser?WebBrowser.Document.GetElementById(string id); 那样获取 html 元素。 我是 CefSharp 的新用户,谢谢
我是一名优秀的程序员,十分优秀!