gpt4 book ai didi

ruby - 将 Nokogiri::XML::Document 转换为 Nokogiri::HTML::Document

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:54 26 4
gpt4 key购买 nike

我想使用 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=等等...有没有人知 Prop 有类似功能的 less auto-magic 库?

非常感谢;)

最佳答案

HTML::Document延伸XML::Document ,但 HTML 文档中的各个节点只是普通的 XML::Nodes ,即没有任何 HTML::Nodes .这提出了一种通过创建一个新的空 HTML::Document 将 XML 文档转换为 HTML 的方法。并设置它的 root到 XML 文档:

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

新文档有类似 title= 的 HTML 方法和 meta_encoding=可用,并且在序列化时创建 HTML 文档而不是 HTML:添加 HTML 文档类型,正确使用空标签,如 <br> , 在适当的地方显示最小化的属性(例如 <input type="checkbox" selected> )并且不会转义像 > 这样的东西在 <script> block 。

关于ruby - 将 Nokogiri::XML::Document 转换为 Nokogiri::HTML::Document,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com