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

时间:2013-08-19 18:32:51

标签: 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"?>

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

1 个答案:

答案 0 :(得分:2)

尝试下面的#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"?>
# >> ######
# >>