将 Nokogiri::XML::D ocument 转换为 Nokogiri::HTML::D ocument



我想使用 XSL 将 XML 文档转换为 HTML,稍微修改一下,然后将其呈现出来。这基本上就是我正在做的事情:

source = Nokogiri::XML(File.read 'source.xml')
xsl = Nokogiri::XSLT(File.read 'transform.xsl')
transformed = xsl.transform(source)
html = Nokogiri::HTML(transformed.to_html)
html.title = 'Something computed'

Stylesheet::transform总是返回XML::Document,但我需要一个HTML::Document实例来使用像title=这样的方法。

上面的代码有效,但是导出并重新解析为HTML非常糟糕。由于目标是源的子类,因此必须有更有效的方法来执行转换。

我该如何收拾这个烂摊子?

作为一个附带的问题,Nokogiri 在处理文档类型、不了解<meta charset=等方面通常让我不知所措......有谁知道具有类似功能的不太自动魔法库?

非常感谢;)

>HTML::Document扩展XML::Document,但HTML文档中的各个节点只是普通XML::Nodes,即没有任何HTML::Nodes。这建议了一种将 XML 文档转换为 HTML 的方法,方法是创建一个新的空HTML::Document并将其root设置为 XML 文档的空:

html = Nokogiri::HTML::Document.new
html.root= transformed.root

新文档具有可用的 HTML 方法,如 title=meta_encoding=,并且在序列化时创建一个 HTML 文档而不是 HTML:添加一个 HTML 文档类型,正确使用空标签(如 <br>(,在适当的地方显示最小化的属性(例如 <input type="checkbox" selected> (,并且不会逃脱诸如> <script>块之类的东西。

相关内容

  • 没有找到相关文章

最新更新