Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Roar::Decorator呈现普通XML属性_Ruby_Xml_Decorator_Rails Roar - Fatal编程技术网

Ruby 如何使用Roar::Decorator呈现普通XML属性

Ruby 如何使用Roar::Decorator呈现普通XML属性,ruby,xml,decorator,rails-roar,Ruby,Xml,Decorator,Rails Roar,我试图在Roar::Decorator中呈现一个普通的XML输出。由于某些原因,不可能获得未转换的输出 我有这门课: class GetShopProductsRequest < OpenStruct def data_filter xml_s = [] xml_s << "<Filter>" xml_s << " <FilterName>#{self.filter_name}</FilterName&g

我试图在Roar::Decorator中呈现一个普通的XML输出。由于某些原因,不可能获得未转换的输出

我有这门课:

class GetShopProductsRequest < OpenStruct

  def data_filter
    xml_s = []
    xml_s << "<Filter>"
    xml_s << "  <FilterName>#{self.filter_name}</FilterName>"
    xml_s << "  <FilterValues>"
    xml_s << "    <FilterValue>#{self.filter_value}</FilterValue>"
    xml_s << "  </FilterValues>"
    xml_s << "</Filter>"

    xml_s.join("\n")
  end

end
并创建XML输出
。要_XML
输出为

<DataFilter>&lt;Filter&gt;
       &lt;FilterName&gt;bla&lt;/FilterName&gt;
       &lt;FilterValues&gt;
         &lt;FilterValue&gt;test&lt;/FilterValue&gt;
       &lt;/FilterValues&gt;
     &lt;/Filter&gt;</DataFilter>
过滤器
过滤器名称bla/过滤器名称
过滤值
FilterValue测试/FilterValue
/过滤值
/滤器

我尝试在代码中的几个位置使用
html\u-safe
,但结果没有改变。

我建议使用类似的方法

这允许您执行以下操作:

require 'builder'

def filter_xml
  xml = Builder::XmlMarkup.new( :indent => 2 )
  xml.instruct! :xml, :encoding => "ASCII"
  xml.Filter do
    xml.FilterName do
      self.filter_name                             
    end
  end
end

puts filter_xml

GetShopProductsRequestPresenter.new(GetShopProductsRequest.new(filter_value=>123,:filter_name=>“test”))在filter_value处包含语法错误,需要为:filter_value,这是导致您的问题的原因吗?感谢您提供的信息,但这不是问题,这只是一个输入错误。我更新了itThanks以获得响应,但问题不是构造XML,尽管您建议的解决方案比我做的更好(我以前使用过Nokogiri)。问题是,为representer调用
.to_xml
会转义xml字符串。我想避免那样。对不起,这不是。。。它产生与原始字符串相同的输出,或者Nokogiri认为您忘记了在openstruct中“包含Roar::XML”,阅读:您的意思是在
GetShopProductsRequest
类中?
GetShopProductsRequest
中包含Roar::XML
不会更改任何内容
<DataFilter>&lt;Filter&gt;
       &lt;FilterName&gt;bla&lt;/FilterName&gt;
       &lt;FilterValues&gt;
         &lt;FilterValue&gt;test&lt;/FilterValue&gt;
       &lt;/FilterValues&gt;
     &lt;/Filter&gt;</DataFilter>
require 'builder'

def filter_xml
  xml = Builder::XmlMarkup.new( :indent => 2 )
  xml.instruct! :xml, :encoding => "ASCII"
  xml.Filter do
    xml.FilterName do
      self.filter_name                             
    end
  end
end

puts filter_xml