Я использую xml-отображение в Ruby (на Sinatra) для некоторых вещей XML. Обычно я следую этому уроку: http://xml -mapping.rubyforge.org / . Я могу создавать объекты и записывать их в строки XML, используя
login.save_to_xml.to_s
Но когда я пытаюсь
login = Login.load_from_xml(xml_string)
Я получаю следующую ошибку:
XML::MappingError - no value, and no default value: Attribute username not set (XXPathError: path not found: username):
Вот строка XML, которую я получаю:
<login><username>ali</username><password>baba</password></login>
Вот как выглядит класс:
class Login
include XML::Mapping
text_node :username, "username"
text_node :password, "password"
end
Таким образом, имя класса одинаково, узлы названы одинаково. Я на самом деле получаю ту же самую строку, когда создаю экземпляр моего объекта и заполняю его ali / baba:
test = Login.new
test.username = "ali"
test.password = "baba"
p test.save_to_xml.to_s
<login><username>ali</username><password>baba</password></login>
Что мне не хватает?
Спасибо,
МРБ
EDIT:
Когда я делаю
test = login.save_to_xml
А потом
login = Login.load_from_xml(test)
это работает. Таким образом, проблема заключается в том, что я передаю строку, в то время как метод ожидает ... ну, что-то еще. В rubydocs определенно есть метод load_from_xml (string), так что не знаете, что здесь передать. Я думаю, мне нужен какой-то обратный ход to_s?