修复无效的HTML和XML

时间:2018-01-30 12:33:56

标签: html ruby-on-rails ruby xml nokogiri

我有一个包含无效HTML和XML的文档。我需要以这样一种方式对其进行解析:每当遇到任何无效的HTML或XML时,都应该修复它而不是将其视为普通字符串。直到现在我已经尝试过这种技术

Nokogiri::HTML(document)
Nokogiri::XML(document)

两者都没有合作。

我也提到这个link,但这对我没什么帮助。此外,我认为黑客喜欢用正则表达式替换无效的HTML和XML,但我的数据太大,所以无法应用该黑客

我正在调用Nokogiri :: HTML(文档),所以它很好地处理html。但问题是它正在跳过我不想要的Xml标签。我需要在浏览器上打印这些标签

某些标签,例如

</SESSION_CONFIG VERSION=“bgh:3”
<METHODS BASEURL=http://abc.hgd.com /servlet/IAMSERVER/>
<ADD_USER URL=“addUser/>

虽然我知道有些标签不合法,但我仍然需要在浏览器上打印

1 个答案:

答案 0 :(得分:0)

您需要配置norecover,以便Nokogiri不会尝试解决问题:

badly_formed = <<-EOXML
  </SESSION_CONFIG VERSION=“bgh:3”
  <METHODS BASEURL=http://abc.hgd.com /servlet/IAMSERVER/>
  <ADD_USER URL=“addUser/>
EOXML

bad_doc  = Nokogiri::HTML(badly_formed) { |config| config.norecover }

puts bad_doc

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>VERSION=“bgh:3”
  <methods baseurl="http://abc.hgd.com"></methods>
  <add_user url="“addUser/">
</add_user></p></body></html>