gpt4 book ai didi

asp.net - HTML Agility 包删除了中断标记 close

转载 作者:行者123 更新时间:2023-12-02 11:34:19 25 4
gpt4 key购买 nike

我正在使用 HTML 敏捷包创建 HTML 文档。我加载一个模板文件,然后将内容附加到其中。所有这些都有效,但是当我查看输出文件时,它已从我的 <br/> 中删除了结束标记。标签看起来像这样 <br> 。这是什么原因造成的?

Dim doc As New HtmlDocument()
doc.Load(Server.MapPath("Template.htm"))

Dim title As HtmlNode = doc.DocumentNode.SelectSingleNode("//title")

title.InnerHtml = title.InnerHtml & "CEU Classes"
Dim topContent As HtmlAgilityPack.HtmlNode = doc.GetElementbyId("topContent")

topContent.InnerHtml = html.ToString
doc.OptionWriteEmptyNodes = True
doc.Save(outputFileName, Encoding.UTF8)

更多信息:

在我添加 doc.OptionWriteEmptyNodes = True 之后,它正在删除我的结束图像标签。 ,它确实做到了。

更新

这是我现在的代码,删除了结束 BR 标签

Dim html As String = "Words<br/>more words"
Dim doc As New HtmlDocument()
Dim title As HtmlNode
Dim topContent As HtmlNode

HtmlNode.ElementsFlags("br") = HtmlElementFlag.Empty
doc.Load(Server.MapPath("Template.htm"))

Title = doc.DocumentNode.SelectSingleNode("//title")
title.InnerHtml = title.InnerHtml & "CEU Classes"

topContent = doc.GetElementbyId("topContent")
topContent.InnerHtml = html.ToString

doc.OptionWriteEmptyNodes = True
doc.Save(outputFileName, Encoding.UTF8)

更新2

我最终只是将模板文件作为标准字符串读取,然后像这样加载 html

Dim TemplateHTML As String = File.ReadAllText(Server.MapPath("Template.htm"))

TemplateHTML = TemplateHTML.Insert(TemplateHTML.IndexOf("<div id=""topContent"">") + "<div id=""topContent"">".Length, _
html.ToString)

doc.LoadHtml(TemplateHTML)

最佳答案

发生这种情况是因为 Html Agility Pack 以特殊方式处理 BR。它仍然支持旧的(但现在存在于网络上)HTML 3.2 语​​法,其中 BR 可以在没有结束标记的情况下声明(顺便说一下,浏览器仍然可以优雅地处理它......)。

要更改此默认行为,您需要修改 HtmlNode.ElementFlags 属性,如下所示:

Dim doc As New HtmlDocument()
HtmlNode.ElementsFlags("br") = HtmlElementFlag.Empty
doc.LoadHtml("<test>before<br/>after</test>")
doc.OptionWriteEmptyNodes = True
doc.Save(Console.Out)

将显示:

<test>before<br />after</test>

关于asp.net - HTML Agility 包删除了中断标记 close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5556089/

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