ruby - 使用 JSON 时,Nokogiri XSLT 将文档标记为 XML 类型

标签 ruby xml json xslt nokogiri

我正在使用 Nokogiri 将 XML 文档转换为 JSON。代码很简单:

@document = Nokogiri::XML(entry.data)
xslt = Nokogiri::XSLT(File.read("#{File.dirname(__FILE__)}/../../xslt/my.xslt"))
transform = xslt.transform(@document)
在本例中,

entry 是基于 Mongoid 的模型,数据是作为字符串存储在 MongoDB 上的 XML blob 属性。

当我转储 transform 的内容时,JSON 就在那里。问题是,Nokogiri 在文档顶部标记了:

<?xml version="1.0"?>

解决这个问题的正确方法是什么?

最佳答案

尝试下面的#apply_to方法(Source):

require 'nokogiri'

doc  = Nokogiri::XML('<?xml version="1.0"><root />')
xslt = Nokogiri::XSLT("<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'/>")
puts xslt.transform(doc)
puts "######"
puts xslt.apply_to(doc)

# >> <?xml version="1.0"?>
# >> ######
# >> 

关于ruby - 使用 JSON 时,Nokogiri XSLT 将文档标记为 XML 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320654/

相关文章:

ruby - "==="运算符在 Ruby 中有什么作用?

java - 初始化 NodeList Java

python - 如果特定 XML 结构通过,则过滤值

php - 如何使用其键将数组分组为子数组?

java - android: 将 json 保存到 sqlite

ruby - ActiveRecord::NoEnvironmentInSchemaError

ruby - Nokogiri 在 Ubuntu 20.04 上安装失败

ruby - 将 Launchd 与 Mavericks 和 Ruby 一起使用

java - 使用简单的 xml 序列化程序 (v2.6.6) 文档没有根元素异常

Javascript 将属性值缓存到变量中