2010-03-01 3 views
1

WCF의 DataContract 및 DataContractSerializer를 사용하여 XML 파일에 객체를 읽고 쓰는 중입니다. 우리는 Ruby on Rails 버전으로 바꾸고 싶습니다. 제가 사용할 수있는 것을 찾고 싶었습니다. 우리는 (이건 그냥 예하지 정확한 개체)과 같은 속성이 개체가 :.NET DataContract serializer에 해당하는 Ruby가 있습니까?

[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 테이블을 만들지 않고도이 애플리케이션을위한 db가 필요 없지만 XML 파일에서 객체의 정적 세트를 읽는 것만으로도이 작업을 수행 할 수 있습니까?

+0

가 가지고있는 XML 스키마를합니까

귀하의 예는 다음과 같을 것 WCF와 일치하나요? – jonnii

+0

예, WCF 스키마를 일치시키는 것이 매우 유용합니다. 그러면 서비스를 직접 바꿀 수 있고 클라이언트가 차이를 알 수 없기 때문입니다. – christophercotton

답변

1

당신은 WCF에서오고 XML 스키마를 지원해야하고 당신은 당신이 행복 매퍼에서 볼 수있는 응용 프로그램을 백업 데이터베이스가 필요가없는 경우 :

http://railstips.org/blog/archives/2008/11/17/happymapper-making-xml-fun-again/

그것은 수있는 좋은 방법 루비에서 xml로 직렬화한다. 그런 다음을 수행하여 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 

: :이 도움이되기를 바랍니다

people = Person.parse(xml_string) 
people.each do |person| 
    puts person.name 
end 

을 ...

관련 문제