【问题标题】:how to parse a string with html tags in its substrings which are bold, italic, underlined如何解析带有粗体,斜体,下划线的子字符串中的html标签的字符串
【发布时间】:2011-05-06 16:01:05
【问题描述】:

我用 c# 为 2D 图形框架创建了某种文本渲染工具。

现在我试图解析带有特定 html 标签的文本,例如:

"Hello <b>world</b>!" 

但是解析代码越来越难看,我想,一定有一些库可以做到这一点。最后它应该输出一个数据结构数组,如:

string text;
bool IsBold;
bool IsItalic;
bool IsUnderlined;
...

string text;
FontStyle FontStyle;

有人知道这样的解析器吗?

非常感谢!

【问题讨论】:

  • 你的代码应该如何响应"&lt;b&gt;hel&lt;/b&gt;lo"等输入?
  • 那么只有 'hel' 是粗体。它将输出一个包含 2 个数据结构的数组。'hel' 与 IsBold = true,'lo' 与 IsBold = false。
  • 那么,下面的输入呢? "&lt;b&gt;&lt;i&gt;hi&lt;/i&gt; there&lt;/b&gt;, you"。显然,一旦允许嵌套标记,数组就不够用了。
  • 这正是我的问题.. 在这种情况下,它应该在数组中输出以下条目:“hi”,IsBold = true 和 IsItalic = true,然后“there”,IsBold = true 和 IsItalic = false,然后是 ", you" 与 IsBold = false 和 IsItalic = false.. 这有意义吗?

标签: c# html parsing


【解决方案1】:

我不知道这将如何工作,但这里有一些 HTML 解析器:
html_parse
htmlagilitypack

【讨论】:

    【解决方案2】:

    Tidy.net 是一个很棒的工具,它是原始 Tidy 项目的一个端口,用于 HTML Tidy firefox 插件。通过 Tidy 运行您的代码,它将返回干净、合规的 html。

    【讨论】:

      【解决方案3】:

      HTML Agility Pack 是一个很好的 HTML 解析器(也可以解析片段)。

      您可以使用 XPath 语法(类似于 XmlDocument)查询它 - 不确定它是否适合您的要求。

      【讨论】:

      • 这引导我进入 System.Xml.XPath 命名空间。现在我可以用“/parenttag/b”选择标签中的一些文本,但是当有像text这样的嵌套标签更多文本时,我将如何获取我的单个文本切片 ...?
      • @thalm - 这将涉及在 XPath 中选择 ::text() 节点。
      • 不确定如何解决嵌套标签问题..?
      猜你喜欢
      • 2014-03-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多