Nokogiri :: XML не создает документ XML - PullRequest
0 голосов
/ 06 октября 2010

Хорошо, поэтому конечной целью здесь является анализ данных внутри 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 Ответ

0 голосов
/ 08 октября 2010

Это работает для меня на 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
...