好的,所以这里的最终目标是解析xml响应中的数据。响应以ruby字符串的格式出现。问题是我在从该字符串创建xml文件时遇到错误(我知道response.body.to_s是一个有效的xml字符串:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<CardTxn>
<authcode>123</authcode>
<card_scheme>Mastercard</card_scheme>
<country>United Kingdom</country>
</CardTxn>
<datacash_reference>XXXX</datacash_reference>
<merchantreference>XX0001</merchantreference>
<mode>TEST</mode>
<reason>ACCEPTED</reason>
<status>1</status>
<time>1286477267</time>
</Response>
在ruby方法中,我尝试生成一个xml文件:
doc = Nokogiri::XML(response.body.to_s)
上述代码执行后doc.to_s的输出是:
<?xml version="1.0"?>
为什么没有正确生成文件的任何想法?
答案 0 :(得分:0)
这适用于1.9.2。注意它是Nokogiri :: XML.parse()。
require 'nokogiri'
asdf = %q{<?xml version="1.0" encoding="UTF-8"?>
<Response>
<CardTxn>
<authcode>123</authcode>
<card_scheme>Mastercard</card_scheme>
<country>United Kingdom</country>
</CardTxn>
<datacash_reference>XXXX</datacash_reference>
<merchantreference>XX0001</merchantreference>
<mode>TEST</mode>
<reason>ACCEPTED</reason>
<status>1</status>
<time>1286477267</time>
</Response>
}
doc = Nokogiri::XML.parse(asdf)
print doc.to_s
这会将XML解析为Nokogiri XML文档,但不会创建文件。 doc.to_s只显示你打印它会是什么样的。
要创建文件,请使用
替换“print doc.to_s”File.open('xml.out', 'w') do |fo| fo.print doc.to_s end