加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – HTML敏捷包删除break标签关闭

发布时间:2020-12-15 23:52:04 所属栏目:asp.Net 来源:网络整理
导读:我正在使用HTML敏捷包创建一个HTML文档.我加载一个模板文件,然后附加内容.所有这些都有效,但是当我查看输出文件时,它已经从我的 br /标签看起来像这样 brgt ;.是什么原因造成的? Dim doc As New HtmlDocument()doc.Load(Server.MapPath("Template.htm"))Dim
我正在使用HTML敏捷包创建一个HTML文档.我加载一个模板文件,然后附加内容.所有这些都有效,但是当我查看输出文件时,它已经从我的< br />标签看起来像这样< br&gt ;.是什么原因造成的?
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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读