使用修改后的Nokogiri解析Wikitext?

时间:2012-02-02 06:38:53

标签: ruby nokogiri wiki

对于这个问题的长度抱歉,这更像是“这可能”而不是“我该怎么做”。

我的目标是从维基百科标记中删除除纯文本之外的所有内容 - 表格,模板,格式。这些是wikitext markup(例如''bold text'')还是HTML(<b>bold text</b>)。

维基百科文字混合了自定义标签:模板{{ ... }},表格{| ... |},链接[[ ... ]]和HTML元素。解析它是一种噩梦。您不能使用正则表达式,因为标签可以嵌套,并且它可以包含HTML,因此几乎任何事情都是可能的。我希望保留HTML中的一些文本(粗体文本中的内容),但是需要完全删除表格等其他内容。

我考虑重新使用像Nokogiri这样的XML解析器,添加{{ / }}作为<x> / </x>的替代品。

知道Nokogiri(或其他Ruby XML解析器)的人是否知道这是可能的还是一个好主意?

我的替代方法是为wiki标记重新调整现有的解析器,如WikiCloth,然后尝试通过其他方法删除任何剩余的HTML。

1 个答案:

答案 0 :(得分:1)

这听起来不错。但是,您无法“修补”Nokogiri,“添加{{/}}作为<x>/</x>的替代方案。这是因为Nokogiri解析和XPath完成的大部分工作以及生成DOM的字符串表示 - 实际上是由libxml2在后端完成的。你必须修补并重新编译libxml2(然后根据你的新版本重建Nokogiri)......但是那时我不知道Nokogiri会如何表现。

尝试修补REXML可能会更好,因为那是用纯Ruby编写的。