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

前端之家收集整理的这篇文章主要介绍了asp.net – HTML敏捷包删除break标签关闭前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用HTML敏捷包创建一个HTML文档.我加载一个模板文件,然后附加内容.所有这些都有效,但是当我查看输出文件时,它已经从我的< br />标签看起来像这样< br&gt ;.是什么原因造成的?
  1. Dim doc As New HtmlDocument()
  2. doc.Load(Server.MapPath("Template.htm"))
  3.  
  4. Dim title As HtmlNode = doc.DocumentNode.SelectSingleNode("//title")
  5.  
  6. title.InnerHtml = title.InnerHtml & "CEU Classes"
  7. Dim topContent As HtmlAgilityPack.HtmlNode = doc.GetElementbyId("topContent")
  8.  
  9. topContent.InnerHtml = html.ToString
  10. doc.OptionWriteEmptyNodes = True
  11. doc.Save(outputFileName,Encoding.UTF8)

更多信息:

在我添加了doc.OptionWriteEmptyNodes = True之后,正在删除我的关闭图像标签,这样做很好.

更新

这是我现在的代码,删除关闭的BR标签

  1. Dim html As String = "Words<br/>more words"
  2. Dim doc As New HtmlDocument()
  3. Dim title As HtmlNode
  4. Dim topContent As HtmlNode
  5.  
  6. HtmlNode.ElementsFlags("br") = HtmlElementFlag.Empty
  7. doc.Load(Server.MapPath("Template.htm"))
  8.  
  9. Title = doc.DocumentNode.SelectSingleNode("//title")
  10. title.InnerHtml = title.InnerHtml & "CEU Classes"
  11.  
  12. topContent = doc.GetElementbyId("topContent")
  13. topContent.InnerHtml = html.ToString
  14.  
  15. doc.OptionWriteEmptyNodes = True
  16. doc.Save(outputFileName,Encoding.UTF8)

更新2

我最终只是在我的模板文件中读取标准字符串,然后加载这样的HTML

  1. Dim TemplateHTML As String = File.ReadAllText(Server.MapPath("Template.htm"))
  2.  
  3. TemplateHTML = TemplateHTML.Insert(TemplateHTML.IndexOf("<div id=""topContent"">") + "<div id=""topContent"">".Length,_
  4. html.ToString)
  5.  
  6. doc.LoadHtml(TemplateHTML)

解决方法

这是因为Html Agility Pack以特殊的方式处理BR.它仍然支持旧的(但现在在网络上)HTML 3.2语法,BR可以声明没有结束标签(浏览器也仍然通过…优雅地处理它).

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

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

显示

  1. <test>before<br />after</test>

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