【问题标题】:C# How to add custom attributes to html string?C#如何为html字符串添加自定义属性?
【发布时间】:2011-09-10 13:19:40
【问题描述】:

我的字符串包含 html,我想为该 html 字符串添加一些属性。

.NETi 中是否有任何 html 解析器/编辑器类可以用来做到这一点?

例如,我在该 html 中有标签 <script>,我想将属性 src="somesrtpath" 添加到所有标签中。

我可能只有一种情况,即 html 在开头只包含两个脚本标签,例如

 <script type="text/javascript" `<add hrere src>` >
 </script>
 <script type="text/javascript" `<add hrere src>`>
 </script>

基本上我想做的只是对某个函数说-这里是每个脚本标签的html添加这个src

【问题讨论】:

  • 您使用的是 Windows 窗体还是 ASP.NET?您真的只有在字符串或页面中的 html 吗?
  • @Davide Piras 我有一段由 blackbox 生成的 html,所以在生成后我想修改它,就像我在问题中描述的那样,基本上我正在构建 @987654325 @

标签: c# .net asp.net-mvc-3 c#-4.0


【解决方案1】:

如果你的 HTML 是在一个字符串中,你肯定可以解析它并使用:

HTML Agility Pack,很多,真的,这里有很多例子......

【讨论】:

  • 所以没有任何第三方 dll 就没有办法做到这一点?
  • 有,但您基本上是在实现自己的解析,这很可能会中断并且永远不会处于同一级别。显示一些用例编辑您的问题,如果您需要做的只是将 src 添加到脚本标签而不是您自己可以做的微不足道,但如果您需要更多,让我们重用而不是重新发明同样的东西......
【解决方案2】:

如果您将 HTML 作为字符串获取,那么您可以使用 .IndexOf("&lt;script ") 来查找脚本。

for (int scriptStart = htmlContent.IndexOf("<script "); scriptStart > -1; scriptStart = htmlContent.IndexOf("<script ",  scriptStart + 1))
{
    // Find position of the type= bit.
    int typeAttributeIndex = htmlContent.IndexOf("type=\"text/javascript\"", scriptStart);

    htmlContent.Insert(typeAttributeIndex + 22, " src=\"something\"");
}

这有点快和肮脏。如果您想进一步清理它,您可以使用正则表达式来确保您正确匹配脚本标记。您还可以匹配脚本块的末尾以查找 >,但请注意脚本标签可以是 &lt;script ... &gt;&lt;/script&gt; 或有时是 &lt;script ... /&gt;。将 src 放在 / 之后会导致问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2015-09-25
    • 2015-01-19
    • 2017-07-02
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多