2013-03-21 126 views
1

我在C#webservice項目中遇到了可空屬性問題。Xml格式錯誤

public class Header 
{ 
    [DataMember] 
    public long Id { get; set; } 
    [DataMember] 
    public long SportId { get; set; } 
    [DataMember] 
    public long TournamentId { get; set; } 
    [DataMember] 
    public string TournamentName { get; set; } 
    [DataMember] 
    public string TournamentShortName { get; set; } 
    [DataMember] 
    public long StatusId { get; set; } 
    [DataMember] 
    public string StatusName { get; set; } 
    [DataMember] 
    public string StatusShortName { get; set; } 
    [DataMember] 
    public DateTime MatchDate { get; set; } 
    [DataMember] 
    public string MatchTime { get; set; } 
    [DataMember] 
    public DateTime? PeriodStartDate { get; set; } 

    [DataMember] 
    public int? Quarter1HomeTeamScore { get; set; } 
    [DataMember] 
    public int? Quarter1AwayTeamScore { get; set; } 
    [DataMember] 
    public int Quarter2HomeTeamScore { get; set; } 
    [DataMember] 
    public int Quarter2AwayTeamScore { get; set; } 
    [DataMember] 
    public int Quarter3HomeTeamScore { get; set; } 
    [DataMember] 
    public int Quarter3AwayTeamScore { get; set; } 
    [DataMember] 
    public int Quarter4HomeTeamScore { get; set; } 
    [DataMember] 
    public int Quarter4AwayTeamScore { get; set; } 

} 

這是序列化後的SOAP XML:

<LiveMatchList> 
<Items> 
    <ListMatch> 
     <Header> 
     <Quarter1HomeTeamScore xsi:nil="true"/> 
     <Quarter1AwayTeamScore xsi:nil="true"/> 
     <Quarter2HomeTeamScore xsi:nil="true"/> 
     <Quarter2AwayTeamScore xsi:nil="true"/> 
     <Quarter3HomeTeamScore xsi:nil="true"/> 
     <Quarter3AwayTeamScore xsi:nil="true"/> 
     <Quarter4HomeTeamScore xsi:nil="true"/> 
     <Quarter4AwayTeamScore xsi:nil="true"/> 
     <Id>138906</Id> 
     <SportId>2</SportId> 
     <TournamentId>8</TournamentId> 
     <TournamentName> Eurocup</TournamentName> 
     <TournamentShortName> AVK</TournamentShortName> 
     <StatusId>12</StatusId> 
     <StatusName> 1. Periyot</StatusName> 
     <StatusShortName> 1.P</StatusShortName> 
     <MatchDate>2013-03-20T00:00:00</MatchDate> 
     <MatchTime> 21:30</MatchTime> 
     <PeriodStartDate xsi:nil="true"/>   
    </Header> 
</ListMatch> 

我試圖在http://www.xmlgrid.net/查看XML,但無法查看因爲xsi:nil = "true"節點吧。而在另一個使用這個webservice的項目中,我在將對象反序列化的同時出錯了xml格式錯誤。

如何忽略空屬性?還是有另一種解決這個問題的方法?

我想:

[DataMember(EmitDefaultValue = false)] 
public int? Quarter1HomeTeamScore { get; set; } 

[DataMember(EmitDefaultValue = false)] 
public int Quarter1HomeTeamScore = 0 
+0

可能重複[序列化對象到XML時,不同的代表Null值] (http://stackoverflow.com/questions/11362313/representing-null-values-differently-when-serializing-objects-to-xml) – JMK 2013-03-21 13:47:01

回答