使用修改的Nokogiri解析Wikitext?
问题描述:
对于这个问题的长度抱歉,它更像是“这是可能的”而不是“我该怎么做”。使用修改的Nokogiri解析Wikitext?
我的目标是从*标记中除去纯文本 - 表格,模板,格式。是否在wikitext markup(例如''bold text''
)或HTML(<b>bold text</b>
)中。
维基文本是自定义标签的混合:模板{{ ... }}
,表{| ... |}
,链接[[ ... ]]
和HTML元素。解析它是一种噩梦。你不能使用正则表达式,因为标签可以嵌套,并且它可以包含HTML,所以几乎任何事情都是可能的。我想保留HTML中的一些文本(粗体文本内的东西),但其他东西如表格需要完全剥离。
我想到了,再重新考虑像引入nokogiri XML解析器,加入{{
/}}
以替代<x>
/</x>
。
有谁知道Nokogiri(或另一个Ruby XML解析器)知道这是否可能,甚至是一个好主意?
我的替代方案是为wiki标记重新使用现有的解析器WikiCloth,然后尝试通过其他方法删除任何剩余的HTML。
这是一种上下文无关的语言,所以libxml应该能够解析它。我不确定您是否可以更改分析树。大概写你自己的解析器。 – Reactormonk 2012-02-02 11:32:43
为什么不把它渲染为HTML,其中包含所有标记的内容,然后使用Nokogiri来提取原始文本? – Phrogz 2012-02-03 06:08:45
@Progrog我可以做到这一点,我只是希望能节省一些时间,因为有很多文字需要解析。 – 2012-02-03 08:16:37