我一直在使用WCF的DataContract和DataContractSerializer来读取/写入XML文件的对象。我们想切换到使用Ruby on Rails版本,我想知道我可以使用什么。我们有具有类似属性的对象(这些只是示例而不是确切的对象):
[DataContract]
public class City
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Location { get; set; }
}
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public City Home {get; set; }
// returns true if the city is near me
public bool NearMe(City myCity) { // insert code to compare cities }
}
和读取对象的代码是:
DataContractSerializer ds = new DataContractSerializer(typeof(Person));
using (Stream s = File.OpenRead("person1.xml"))
{
Person p = (Person) ds.ReadObject(s);
}
在Ruby / Rails中执行相同操作的等效格式是什么?如何定义对象?我从XML文件中读取它们的方法是什么?我已经看到我可以尝试将所有内容定义为模型,然后为每个对象创建后端数据库。无论如何都可以在不创建所有db表的情况下执行此操作,因为我们不需要为此应用程序使用db,而只是从XML文件中读取静态的对象集。
答案 0 :(得分:1)
如果您需要支持来自WCF的xml架构,并且您不需要支持应用程序的数据库,那么您可以查看快乐映射器:
http://railstips.org/blog/archives/2008/11/17/happymapper-making-xml-fun-again/
这是在ruby中与xml序列化的好方法。
您的示例如下:
class City
include HappyMapper
element :name, :tag => "Name"
element :location, :tag => "Location"
end
class Person
include HappyMapper
element :name, :tag => "Name"
has_one :city, :tag => "City"
end
然后您将通过执行以下操作来解析xml:
people = Person.parse(xml_string)
people.each do |person|
puts person.name
end
我希望这会有所帮助......