2013-08-19 45 views
2

我正在使用Nokogiri将XML文档转换为JSON。该代码是直接:使用JSON时,Nokogiri XSLT将文档标记为XML类型

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

entry在这种情况下是一个基于模型Mongoid和数据是存储作为有关MongoDB字符串的XML团块属性。

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

<?xml version="1.0"?> 

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

+0

是什么'@ document'? –

+1

好点 - 更新我的问题,以澄清@文档来自哪里。 – randombits

回答

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"?> 
# >> ###### 
# >> 
+1

使用apply_to而不是变换做了诀窍。猜猜我有一些阅读要做 - 并感谢您的解决方案。 – randombits