繁体   English   中英

Nokogiri :: XML无法创建xml文档

[英]Nokogiri::XML not creating xml document

好的,所以这里的最终目标是解析xml响应中的数据。 响应采用红宝石字符串的格式。 问题是从该字符串创建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"?>

为什么无法正确生成文件的任何想法?

这对我来说适用于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM