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

前端之家收集整理的这篇文章主要介绍了asp.net – HTML敏捷包删除break标签关闭前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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>
原文链接:https://www.f2er.com/aspnet/250972.html

猜你在找的asp.Net相关文章