【发布时间】:2011-08-26 17:55:25
【问题描述】:
我在 Ruby(在 Sinatra 上)中使用 xml 映射来处理一些 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>
我错过了什么?
谢谢, B先生
编辑:
当我这样做时
test = login.save_to_xml
然后
login = Login.load_from_xml(test)
它有效。所以问题似乎是我正在传递一个字符串,而该方法正在等待......好吧,还有别的东西。 rubydocs 中肯定有一个 load_from_xml(string) 方法,所以不确定要在这里传递什么。我想我需要某种反向to_s?
【问题讨论】: