2016-04-27 14 views
0

こんにちは、XMLファイルをオブジェクトにデシリアライズしようとしていますが、値が得られません。クラスモデルに問題があると思います。 私はそれを実行すると、結果のオブジェクトにデータが入力されません。C#でオブジェクトをXMLに逆シリアル化する際のデータがありません

XDocument test = XDocument.Load(UrlAdrress); 
var result = XMLHelper.FromXML<XmlSportsModel>(test); 

構造は、ここに私のxmlのように見えると私はそれを変更傾けるある enter image description here

正しいです。 XMLFile

マイデシリアライザ

public static class XMLHelper 
{ 
    public static T FromXML<T>(XDocument data) 
    { 
     var xmlSerializer = new XmlSerializer(typeof(T)); 
     using (var reader = data.CreateReader()) 
     { 
      return (T)xmlSerializer.Deserialize(reader); 
     }    
    } 
} 

マイモデル

[XmlRoot("XmlSports")] 
public class XmlSportsModel 
{ 
    [XmlElement("Sport")] 
    public SportModel[] Sports { get; set; }  
} 

    public class SportModel 
{ 
    [XmlElement(ElementName = "Name")] 
    public string Name { get; set; } 

    [XmlElement(ElementName = "ID")] 
    public string Id { get; set; } 
    [XmlElement(ElementName = "Event")] 
    public EventModel[] Events { get; set; } 
} 


    public class EventModel 
{ 
    [XmlElement("Name")] 
    public string Name { get; set; } 
    [XmlElement("ID")] 
    public int Id { get; set; } 
    [XmlElement("CategoryID")] 
    public int CategoryId { get; set; } 
    [XmlElement("IsLive")] 
    public bool IsLive { get; set; } 
    [XmlElement("Match")] 
    public MatchModel[] Matches { get; set; } 
} 

public class MatchModel 
{ 
    [XmlElement("Name")] 
    public string Name { get; set; } 
    [XmlElement("ID")] 
    public int Id { get; set; } 
    [XmlElement("StartDate")] 
    public DateTime StartDate { get; set; } 
    [XmlElement("MatchType")] 
    public MatchType Matchtype { get; set; } 
    [XmlElement("Bet")] 
    public BetModel[] Bets { get; set; } 
} 

public enum MatchType 
{ 
    PreMatch, 
    Live 
} 

答えて

0

のVisual Studio 2012以降では、XMLを取り、編集するために行くことができます - > [貼り付けスペシャル - > [貼り付けクラスとしてのXML。あなたがそれを持っていないなら、あなたのためにそれを行うオンラインツールがあります。

ただ、ここではXMLの貼り付けからの結果である、変革を支援するために:

XDocument test = XDocument.Load("sportxml.xml"); 
var result = XMLHelper.FromXML<XmlSports>(test); 
+0

が、私はそれを試みたが、動作していないよう:

/// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class XmlSports { private XmlSportsSport[] sportField; private System.DateTime createDateField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Sport")] public XmlSportsSport[] Sport { get { return this.sportField; } set { this.sportField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public System.DateTime CreateDate { get { return this.createDateField; } set { this.createDateField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class XmlSportsSport { private XmlSportsSportEvent[] eventField; private string nameField; private ushort idField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Event")] public XmlSportsSportEvent[] Event { get { return this.eventField; } set { this.eventField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string Name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public ushort ID { get { return this.idField; } set { this.idField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class XmlSportsSportEvent { private XmlSportsSportEventMatch[] matchField; private string nameField; private ushort idField; private ushort categoryIDField; private bool isLiveField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Match")] public XmlSportsSportEventMatch[] Match { get { return this.matchField; } set { this.matchField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string Name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public ushort ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public ushort CategoryID { get { return this.categoryIDField; } set { this.categoryIDField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public bool IsLive { get { return this.isLiveField; } set { this.isLiveField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class XmlSportsSportEventMatch { private XmlSportsSportEventMatchBet[] betField; private string nameField; private uint idField; private System.DateTime startDateField; private string matchTypeField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Bet")] public XmlSportsSportEventMatchBet[] Bet { get { return this.betField; } set { this.betField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string Name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public uint ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public System.DateTime StartDate { get { return this.startDateField; } set { this.startDateField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string MatchType { get { return this.matchTypeField; } set { this.matchTypeField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class XmlSportsSportEventMatchBet { private XmlSportsSportEventMatchBetOdd[] oddField; private string nameField; private uint idField; private bool isLiveField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Odd")] public XmlSportsSportEventMatchBetOdd[] Odd { get { return this.oddField; } set { this.oddField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string Name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public uint ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public bool IsLive { get { return this.isLiveField; } set { this.isLiveField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class XmlSportsSportEventMatchBetOdd { private string nameField; private uint idField; private decimal valueField; private decimal specialBetValueField; private bool specialBetValueFieldSpecified; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string Name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public uint ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public decimal Value { get { return this.valueField; } set { this.valueField = value; } } /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public decimal SpecialBetValue { get { return this.specialBetValueField; } set { this.specialBetValueField = value; } } /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool SpecialBetValueSpecified { get { return this.specialBetValueFieldSpecified; } set { this.specialBetValueFieldSpecified = value; } } } 

そして、使用されるコードだけでした。 https://msdn.microsoft.com/en-us/library/hh371548(v=vs.110).aspx – Prabulg

+0

私は実際にあなたのクラスとあなたのコードとVisual Studio 2015で貼り付けたXMLの結果を使用していました。私はあなたの質問からコピーしたので、コードを貼り付けることさえできません。 –

+0

ええ、私はVS2015でペーストすることができたので、今ではバグが分かりました。 – Prabulg

関連する問題