2011-03-10 4 views
1

나는 클래스 또는 내 직렬화의 대상 객체의 형식이어야합니다 어떤 형식 내가이 XML 파일을 직렬화하는 경우XML 역 직렬화

"<rundate> 

    <rundateItem> 
    <LeaveCreditingMonth>2</LeaveCreditingMonth> 
    <LeaveCreditingYear>2010</LeaveCreditingYear> 
    <IncludeNoTimesheet>True</IncludeNoTimesheet> 
    </rundateItem> 

</rundate>" 

에 xml 파일을 가지고? 현재 내 클래스는 다음과 같습니다

public class rundate 
    { 

     string _leaveCreditingMonth; 
     string _leaveCreditingYear; 
     string _includeNoTimesheet; 

     public string LeaveCreditingMonth {get{return _leaveCreditingMonth;}set{ _leaveCreditingMonth = value;}} 
     public string LeaveCreditingYear {get{return _leaveCreditingYear;}set{ _leaveCreditingYear = value;}} 
     public string IncludeNoTimesheet {get{return _includeNoTimesheet;}set{ _includeNoTimesheet = value;}} 

    } 

답변

3

클래스는있을 수 (분명히 데이터 유형을 적절하게 변경해야합니다) - XML에 rundate이 중첩되어 있으므로 (둘 이상있을 수 있음을 의미 함) 수집을 추가하는 것이 좋습니다 이온 클래스는 다음과 같이

[XmlRoot("rundate")] 
public class RundateCollection 
{ 
    [XmlElement("rundateItem")] 
    public List<rundate> Rundates { get; set; } 
} 
당신은 직렬화 테스트 할 수 있습니다

/당신의 XML과 클래스의 직렬화 복원 다음과 같이

XmlSerializer serializer = new XmlSerializer(typeof(RundateCollection)); 
StringWriter sw = new StringWriter(); 
rundate myRunDate = new rundate() { LeaveCreditingMonth = "A", IncludeNoTimesheet = "B", LeaveCreditingYear = "C" }; 
RundateCollection ra = new RundateCollection() { Rundates = new List<rundate>() { myRunDate } }; 
serializer.Serialize(sw, ra); 
string xmlSerialized = sw.GetStringBuilder().ToString(); 
string xml = File.ReadAllText(@"test.xml"); 
StringReader sr = new StringReader(xml); 
var rundateCollection = serializer.Deserialize(sr); 

당신은 컬렉션 클래스가 성공적으로 XML로 직렬화되는 것을보고 한 목록이 포함됩니다 유형은 runlist입니다.

+0

정말 고마워 .. 정말 많이 도움이 .. – Lemuel

2

내가 지금 같은 클래스를 설계하는 것입니다 :

public class Rundate 
    { 

     public int LeaveCreditingMonth { get; set;} 
     public int LeaveCreditingYear { get; set; } 
     public bool IncludeNoTimesheet { get; set; } 

    } 

그런 다음이 같은 직렬화 할 수

var serializer = new XmlSerializer(typeof(List<Rundate>)); 
using (var fs = new FileStream("yourfile.xml", FileMode.Open)) 
{ 
    using (var reader = new XmlTextReader(fs)) 
    { 
     var rundates = (List<Rundate>)serializer.Deserialize(reader); 
    } 
}