【问题标题】:rails write xml with builder in actionrails 使用 builder 编写 xml
【发布时间】:2011-04-21 01:53:51
【问题描述】:

我想在我的网站中使用 hipay。所以我需要在一个动作中生成一个 xml,然后通过 post 发送到 hipay 网站。

我的问题是:

我如何动态地创建一个 xml,然后在同一操作中通过 post 发送这个 xml?

我的控制器中的示例

def action_generate_xml
  @xml = Builder::XmlMarkup.new()
  # I want generate my xml here
  #
  #
  # End generate xml
  #Now i want send My XML via post
  #CODE FOR SEND VIA POST
end

提前致谢

【问题讨论】:

    标签: ruby-on-rails xml builder


    【解决方案1】:

    假设 XML 数据位于 ActiveRecord 对象中,然后调用 to_xml 将为您提供对象的 xml 表示。您可以使用 Ruby 的 Net:HTTP 模块来处理帖子。

    http = Net::HTTP.new("www.thewebservicedomain.com")
    response = http.post("/some/path/here", your_model_object.to_xml)
    

    如果您想在控制器中生成 XML(不是很像 Rails,但您仍然可以这样做),请使用构建器 gem:

    xml = Builder::XmlMarkup.new
    xml.instruct! :xml, :verison => "1.0"   # Or whatever your requirements are
    # Consult the Builder gem docs for different ways you can build up your XML, this is just a simple example.
    xml.widgets do
      xml.widget do
        xml.serial_number("12345")
        xml.name("First Widget")
        xml.any_other_tag_you_need("Contents of tag")
      end
    end
    # And now send the request
    http = Net::HTTP.new("www.thewebservicedomain.com")
    response = http.post("/some/path/here", xml)
    

    第二个示例生成以下 XML 字符串,并通过 HTTP POST 将其发送到目标服务器:

    <inspect/><?xml version=\"1.0\" encoding=\"UTF-8\" verison=\"1.0\"?><widgets><widget><serial_number>12345</serial_number><name>First Widget</name><any_other_tag_you_need>Contents of tag</any_other_tag_you_need></widget></widgets>
    

    【讨论】:

    • 对不起。我不明白。为什么我将 xml 保存在 ActiveRecord 对象中。我只想在行动中创建一个 xml,然后通过帖子发送。现在我编辑我的帖子并写一个例子。谢谢
    • 再次对不起。 xml 有其他信息和标签。我必须遵循 hipay 文档的 xml 提要。因此我必须在 xml 中创建其他标签。
    • @maxiperez 我提供的示例没有在 ActiveRecord 中保存任何 xml,它将 ActiveRecord 对象转换为表示对象内容的 xml 字符串。这是一个常见的 Rails 习惯用法。我将在几分钟内重写我的答案,并根据您正在寻找的内容为您提供更多示例。
    • @maxiperez 请问您使用 Hipay 的体验如何?易于与导轨集成?优点缺点 ?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2015-11-26
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多