gpt4 book ai didi

html-agility-pack - Html Agility Pack InnerHtml 返回带有文本框的错误字符串

转载 作者:行者123 更新时间:2023-12-04 06:37:18 29 4
gpt4 key购买 nike

以下测试代码:

[Test]
public void PossibleHtmlAgilityPackBug()
{
const string html = @"<input type=""text"" name=""shouldNotTrim"" />";
var doc = new HtmlDocument();
doc.LoadHtml(html);

Assert.That(doc.DocumentNode.InnerHtml, Is.EqualTo(html));
}

结果是:
Expected string length 42 but was 40. Strings differ at index 39.
Expected: "<input type="text" name="shouldNotTrim" />"
But was: "<input type="text" name="shouldNotTrim">"
--------------------------------------------------^

这是一个错误吗?或者是否有我可以更改的配置以输出我需要的额外“/”?

谢谢,

最佳答案

这不是一个错误。 INPUT 被解析器认为是一个“空”元素(参见这个例子:HTMLAgilityPack don't preserves original empty tags 在空元素主题上),并且默认情况下,这些元素在没有关闭/的情况下呈现。

原因在历史上与 HTML 3.2 有关。在那些日子里,INPUT 不需要关闭,尽管它今天看起来像一个错误。

这将解决您的问题:

public void PossibleHtmlAgilityPackBug()
{
const string html = @"<input type=""text"" name=""shouldNotTrim"" />";
var doc = new HtmlDocument();
doc.OptionWriteEmptyNodes = true;
doc.LoadHtml(html);

Assert.That(doc.DocumentNode.InnerHtml, Is.EqualTo(html));
}

附带说明一下,HTML 敏捷包不会总是创建与 html 文本完全相同的内容,但它会始终尝试重建以相同方式呈现的内容。浏览器支持未关闭的 INPUT 没有问题。

关于html-agility-pack - Html Agility Pack InnerHtml 返回带有文本框的错误字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709910/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com