1

我的控制器中有一个 URL,当调用它时会返回一个 XML 响应。假设,响应看起来像这样;

<?xml version="1.0" encoding="UTF-8"?>
<AutoCreate>
<Response>
    <Status>YES</Status>
    <name>JOSEPH</name>
    <location>HOME</location>
</Response>
</AutoCreate>

我怎样才能读取这些值statusnamelocation在我的控制器中读取变量并使用它们。

先感谢您。

4

4 回答 4

1

你能试试这个吗

response_json = Hash.from_xml(response).to_json
于 2013-10-30T20:04:27.863 回答
1

所以这是 Rails 5 的更新,

如果您收到 XML 响应,则标头将是“application/xml”您使用以下方式访问数据

#read the response and create a Hash from the XML
response = Hash.from_xml(request.body.read)

#read value from the Hash
status = response["AutoCreate"]["Response"]["Status"]
于 2017-10-16T15:13:40.110 回答
0

您可以使用https://github.com/alsemyonov/xommelier

feed = Xommelier::Atom::Feed.parse(open('spec/fixtures/feed.atom.xml'))
puts feed.id, feed.title, feed.updated

feed.entries do |entry|
  puts feed.id, feed.title, feed.published, feed.updated
  puts feed.content || feed.summary
end
于 2014-09-05T21:04:54.260 回答
0

如果 respose.body 的值为;

<?xml version="1.0" encoding="UTF-8"?>
<AutoCreate>
<Response>
    <Status>YES </Status>
    <name> JOSEPH </name>
    <location> HOME </location>
</Response>
</AutoCreate>

然后我认为这应该没问题。

require ‘active_support’ 
result = Hash.from_xml(response.body)

然后;

result.status  == "YES"

这行得通吗?

于 2013-10-30T19:52:45.297 回答