2013-08-19 2 views
2

Я использую Nokogiri для преобразования XML-документа в JSON. Код прямо вперед:Nokogiri XSLT тегирование документа как XML-тип при использовании JSON

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

entry в этом случае является на основе Mongoid модели и данных является атрибутом XML BLOB хранится в виде строки на MongoDB.

Когда я сбрасываю содержимое transform, там находится JSON. Проблема заключается в том, Nokogiri будет помечать верх документа с:

<?xml version="1.0"?> 

Что такое правильный способ решения этого?

+0

что '@ document'? –

+1

хорошая точка - обновил мой вопрос, чтобы уточнить, откуда появился @document. – 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

Смежные вопросы