HTML Agility 包删除了中断标记 close

2024-05-10

我正在使用 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,它确实这样做了。

Update

这是我现在的代码,删除了结束 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)

Update 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML Agility 包删除了中断标记 close 的相关文章

随机推荐

  • MongoDB 使用 $sort、$skip 和 $limit 返回错误的行

    这是我正在使用的功能 MyModel aggregate match query sort createdAt 1 skip skip limit 10 allowDiskUse true query是过滤行 skip是基于分页的动态值 即
  • 如何在 Swift 中创建不可变数组?

    如何在 Swift 中创建不可变数组 粗略阅读文档会建议你可以这样做 let myArray 1 2 3 但遗憾的是 这实际上产生了一个可变的 固定大小的数组 这种可变性会产生常见的谜题 比如意外的别名和函数参数的突变 let outter
  • Poetry 安装失败并出现 EnvCommandError:查找版本 2020.12.21.3-lambda,为什么?

    诗歌无法完成任何事install or add不扔EnvCommandError与无法找到一个有关setup py for soupsieve 它查找版本 2020 12 21 3 lambda 我不明白为什么它没有像其他依赖项一样使用普通
  • “System.Int32”类型的表达式不能用于返回类型“System.Object”

    我正在尝试制作一个简单的脚本系统 用于打印标签 我过去曾通过反射完成此操作 没有任何问题 但我现在尝试使用 Lambda 函数来完成此操作 以便可以缓存函数以供重用 到目前为止我的代码如下 public static string GetV
  • WPF 窗口关闭后不会释放内存

    我创建了一个测试代码 private void Application Startup 1 object sender StartupEventArgs e ShutdownMode System Windows ShutdownMode
  • 如何删除垂直滚动条 SyntaxHighlighter 块?

    我是网络开发的新手 可能有一个主要问题 我已经在我的网站上安装了 Joomla 2 5 CMS 下载 安装并打开语法荧光笔 http alexgorbatchev com SyntaxHighlighter 插入 然后启用bash语法并在我
  • python 中的最大主动回撤

    我最近问了一个关于计算最大回撤 https stackoverflow com questions 36750571 calculate max draw down with a vectorized solution in python
  • 如何在 React 中使用 Jest 模拟 window.location.href?

    我正在测试不应该在本地运行并且需要模拟的功能window location href const usePageTracking void gt const location useLocation useEffect gt if wind
  • 基于时间的算法评分

    我们希望创建一种评分算法 在更短的时间内获得更高的分数 在更长的时间内获得更少的分数 需要注意的是 没有实际范围 因此时间范围可以从 100 毫秒到长达 10 分钟或更长时间 点范围为 0 到 50 谢谢你的帮助 你可以简单地把它变成一个线
  • 创建 CloudFront Distribution 时出现 Crypp CloudFormation 失败

    我设置了一个 CloudFormation 模板来跟踪 CloudFront 分发等 设置完毕后 我创建了一个AWS CertificateManager Certificate and an AWS CloudFront Distribu
  • NSMenuItem 中的自定义 NSView 未接收鼠标事件

    我使用 popUpStatusItemMenu 从 NSStatusItem 中弹出一个 NSMenu 这些 NSMenuItems 显示了一堆不同的链接 每个链接都通过 setAction 连接到目标的 openLink 方法 这种安排长
  • Django 自定义 UserManager 中的 self.model()

    所以 我对 Django 还很陌生 尽管我的代码在遵循 Django 文档 在 Django 中自定义身份验证 之后工作 但我不明白他们的示例中的 self model 实际如何工作 它来自哪里以及它如何与 自己 这是在文档底部找到的示例
  • Rails 3 沙箱控制台

    在 Rails 2 中你可以运行 script console sandbox 这样您就可以使用生产数据而不会意外破坏任何东西 我似乎找不到 Rails 3 的等效命令 有人知道它是什么吗 很简单 输入 bundle exec rails
  • 在其他设备上无法通过IP地址访问Vue项目 vue cli 3 npm

    我有一个使用 vue cli 3 创建的项目 当我运行命令 npm runserve 时 它会给出以下成功消息 我用假 替换了我的IP地址 App running at Local http localhost 8080 Network h
  • 如何通过 SSL 从 Phoenix Web App 连接到 PostgreSQL?

    When trying to run Elixir Phoenix Web Application using PostgreSQL Database hosted 3rd party Database as a Service Azure
  • 启动时的 Android pin 活动

    我有一个应用程序 它将自身注册为默认启动器 并在启动时自动固定自身 安装应用程序时这一切都正常 它会自行固定 并且只有后退按钮可见 问题是 当设备首次启动时 它无法正确固定 我多次看到一系列 屏幕固定 和 屏幕取消固定 的 toast 主页
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • WCF Rest 服务还是 ASP.NET MVC 控制器/操作?

    如果有人能提供一些关于哪种更有益的见解 我将不胜感激 WCF 中的 RESTful 服务可以提供与 ASP Net MVC 控制器相同的功能 即可以使用控制器 操作适当地形成 URL 使用其中一种比另一种有真正的好处吗 WCF休息服务将提供
  • HTML Agility 包删除了中断标记 close

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