1

私は 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 ファイルからオブジェクトの静的セットを読み取るだけなので、すべての db テーブルを作成せずにそれを行う方法はありますか。

4

1 に答える 1

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

これが役立つことを願っています...

于 2010-03-01T19:06:37.123 に答える