我正在为特定模型在 rails 中编写自己的 to_xml 方法。但是,当递归调用我的方法时,to_xml 方法会将结果编码为特殊实体。
这是我的方法:
def to_xml(options = {})
require 'builder'
options[:indent] ||= 2
xml = options[:builder] ||= ::Builder::XmlMarkup.new(:indent => options[:indent] )
xml.instruct! unless options[:skip_instruct]
xml.node {
if self.nodeparent
xml.layout( self.nodeparent.to_xml(:skip_instruct=>true,:indent=>2) )
end
xml.package{
self.package('Node').each do |node|
end
}
xml.template{
xml.name(self.template.name )
xml.file(self.template.file )
}
}
end
“xml.layout”部分在同一模型的另一个实例上再次调用 to_xml 方法。然而,结果源代码不是有效的 XML,而是一个编码字符串。:
<?xml version="1.0" encoding="UTF-8"?>
<node>
<layout><node>
<package>
</package>
<template>
<name>mainlayout</name>
<file>mainlayout</file>
</template>
</node>
</layout>
<package>
</package>
<template>
<name>homepage</name>
<file>homepage</file>
</template>
</node>
有没有办法解决这个问题?我应该使用 Nokogiri 吗?