我试图使用Builder生成KML.我知道他们是一些选择,以帮助这一点,但我将会做一些2.2特定的事情,不支持我所看到的KML宝石,一般希望能够完成这一杠杆只是一个
XML框架.
在渲染我的kml / xml时,我在文件末尾获得一个标签.我强烈地怀疑我设置了我的Builder对象,或者如何渲染输出,我错过了一些基本的东西.以下是一个简单的例子来演示这个问题:
def kml2dot2 @site = Site.find(params[:id]) xml = Builder::XmlMarkup.new(:indent => 2) xml.instruct! xml.kml("xmlns" => "http://www.opengis.net/kml/2.2") { xml.Placemark do xml.name @site.mapNameFull xml.Point do xml.coordinates @site.lat.to_s + "," + @site.lng.to_s + ",0" end end } render :text => xml,:type=>"text/kml" end
生产:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>Seattle City Hall</name> <Point> <coordinates>47.6040746,-122.33005,0</coordinates> </Point> </Placemark> </kml> <to_s/>
我试图理解如何避免< to_s />被包括在内,我在做错了什么.感谢任何见解.
解决方法
您不需要初始化XML构建器对象.只需使用集成的构建器模板处理程序.
>调用模板kml2dot2.xml.builder
>直接在视图中编写代码
例
def kml2dot2 @site = Site.find(params[:id]) end # kml2dot2.xml.builder xml.kml("xmlns" => "http:// www.opengis.net/kml/2.2") do xml.Placemark do xml.name @site.mapNameFull xml.Point do xml.coordinates "#{@site.lat},#{@site.lng},0" end end end