阻止Nokogiri删除新行

时间:2013-06-26 05:57:42

标签: ruby html-parsing nokogiri

我正在尝试从字符串中删除所有html,以便我可以对其执行一些正则表达式。我发现你可以使用Nokogiri来使用xpath来获取文本:

Nokogiri::HTML(my_string).xpath("//text()").text

这很有效,但我发现它几乎随机删除了一些新的行字符,最终破坏了我的正则表达式。它收到的html总是有效的(虽然通常没有很好地形成 - 它是使用wysiwyg编辑器制作的)所以这应该不是问题。

Nokogiri有没有理由删除新线路,有没有办法避免它?这是一个命令行脚本,所以我没有rails或其他任何东西。

这是一个不保留换行符的文本示例:

<p>Composition: <span>83% Polyester Bright, 17% Spandex &nbsp; &nbsp;</span>&nbsp;<span><br />
 </span>Washing: Cold hand wash only<span><br />
 </span>Designer: James Lillis&nbsp;<span><br />
 </span>Made in: Australia&nbsp;</p>

如果重要,我正在使用Oj从JSON文件中读取html。这就是它在JSON文件中的显示方式:

"\u003Cp\u003EComposition: \u003Cspan\u003E83% Polyester Bright, 17% Spandex \u0026nbsp; \u0026nbsp;\u003C/span\u003E\u0026nbsp;\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EWashing: Cold hand wash only\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EDesigner: James Lillis\u0026nbsp;\u003Cspan\u003E\u003Cbr /\u003E\n \u003C/span\u003EMade in: Australia\u0026nbsp;\u003C/p\u003E\n"

当我通过上面的nokogiri函数调用时,这就是它的结果:

Composition: 83% Polyester Bright, 17% Spandex     Washing: Cold hand wash onlyDesigner: James Lillis Made in: Australia

感谢您的帮助

更新:我发现当\n字符位于span元素中时,它似乎会删除换行符(由于某种原因,编辑器做了很多)。如果有办法阻止这种情况发生,我想知道,否则我可能会尝试事先检测到它。

0 个答案:

没有答案