我在数据库表文本字段中存储了很多标记,这个标记可能有不同的结构。
我需要从存储在数据库中的每个标记中提取纯文本,因此我决定使用Ox
gem,因为它是根据测试最快的ruby xml解析库。当我尝试这样做时,我得到这样的错误:
irb(main):026:0> Ox.parse(some_html)
Ox::ParseError: invalid format, document not terminated at line 1, column 23 [parse.c:521]
我知道如何使用Nokogiri
,但我需要使用Ox
库
答案 0 :(得分:0)
对于解析html我应该使用Ox.sax_html
方法和sax处理程序,但不是Ox.parse
require 'stringio'
require 'ox'
class TextHandler < ::Ox::Sax
attr_reader :parsed_text
def initialize()
@parsed_text = ''
end
def text(value)
@parsed_text << " #{value}"
end
end
text_handler = TextHandler.new
options = {
symbolize: true,
skip: :skip_white,
smart: true
}
some_markup = '<img src="logo.png" alt="logo"><div>hello</div><div>world ...'
input = StringIO.new(some_markup)
Ox.sax_html(text_handler, input, options)
text_handler.parsed_text