Html 如何借助';牛';宝石
我在数据库表文本字段中存储了很多标记,这些标记可以有不同的结构。 我需要从数据库中存储的每个标记中提取纯文本,因此我决定使用Html 如何借助';牛';宝石,html,ruby,xml,html-parsing,Html,Ruby,Xml,Html Parsing,我在数据库表文本字段中存储了很多标记,这些标记可以有不同的结构。 我需要从数据库中存储的每个标记中提取纯文本,因此我决定使用Oxgem,因为根据测试,它是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] 我知道如何使用No
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
库来解析html,我应该使用带有sax处理程序的Ox.sax_html
方法,而不是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
需要“stringio”
需要“牛”
类TextHandler<::Ox::Sax
属性读取器:已解析的文本
def初始化()
@已解析的_文本=“”
结束
def文本(值)
@解析文本您确定您的HTML实际上是有效的XML吗?HTML可能看起来像XML,也可能是XML,但它不能遵循XML的严格规则来保持有效的HTML。此HTML不是有效的XML,例如,它可能包含自关闭标记)
。主要问题是如何从html中解析和提取文本,而html并不总是有效的xml。其他库,如Nokogiri
也有这种可能性,因此可能可以使用Ox
来完成。您是否阅读并尝试过Ox主页上有关HTML解析的部分:?@spickermann是的,我尝试过更改文档中的默认设置,但结果是一样的:Ox::ParseError
…您能为您的问题提供一个示例文档,例如第1行第23列失败的文档吗?