HtmlAgilityPack丢弃选项结束标记

HtmlAgilityPack丢弃选项结束标记,第1张

概述我正在使用HtmlAgilityPack。我使用以下字符串创建一个HtmlDocument和LoadHtml: <select id="foo_Bar" name="foo.Bar"><option selected="selected" value="1">One</option><option value="2">Two</option></select> 这有一些意想不到的事情。首先,它给出 我正在使用HTMLAgilityPack。我使用以下字符串创建一个HTMLdocument和LoadHTML:
<select ID="foo_bar" name="foo.bar"><option selected="selected" value="1">One</option><option value="2">Two</option></select>

这有一些意想不到的事情。首先,它给出两个解析器错误,EndTagNotrequired。其次,选择节点有4个子项 – 两个选项标签,另外两个用于选项标签的内部文本。最后,OuterHTML是这样的:

<select ID="foo_bar" name="foo.bar"><option selected="selected" value="1">One<option value="2">Two</select>

所以基本上决定放弃选项上的结束标签。让我们离开一会儿,不管这样做是否合适。我使用HTMLAgilityPack测试HTML生成代码,所以我不希望它为我作出任何决定或给出任何错误,除非HTML真的格式错误。有没有办法让它表现我想要的?我尝试为HTMLdocument设置一些选项,具体来说:

doc.OptionautoCloSEOnEnd = false; doc.OptionCheckSyntax = false; doc.OptionFixnestedTags = false;

这不行。如果HTMLAgilityPack不能做我想要的,你能推荐一些可以吗?

解决方法 在HAP主页的讨论中报告了完全相同的错误,但是在几年内似乎没有对项目进行任何有意义的修复。不鼓励

快速浏览源代码表明错误可能会通过注释掉HTMLNode.cs的第92行来解决:

// they sometimes contain,and sometimes they don 't...ElementsFlags.Add("option",HTMLElementFlag.Empty);

(实际上不,它们总是包含标签文本,尽管空白字符串也将是有效的文本。粗心的作者可能会忽略结束标签,但是对于任何元素都是这样)。

一个等效的解决方案是调用HTMLNode.ElementsFlags.Remove(“option”);在任何使用自由之前(不需要修改自由的源代码)

总结

以上是内存溢出为你收集整理的HtmlAgilityPack丢弃选项结束标记全部内容,希望文章能够帮你解决HtmlAgilityPack丢弃选项结束标记所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存