2013-03-21 85 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

回答