您好我正在尝试将XML文件反序列化为对象,但我没有得到任何值。我认为类模型存在问题。 当我运行它时,我得不到生成的对象中填充的数据。
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);
}
}
}
这是我的xml看起来像我无法改变它。 XMLFile
我的反序列化程序
[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
}
我的模特
<html>
<body>
<div class="somethingunneccessary"></div>
<div class="container">
<div>
<p>text1</p>
<p>text2</p>
<p>text3</p>
</div>
<div>
<p>text4/p>
<p>text5</p>
<p>text6</p>
</div>
<div>
<p>text7</p>
<p>text8</p>
<p>text9</p>
</div>
<div>
<p>text10</p>
<p>text11</p>
<p>text12</p>
</div>
<div>
<p>text13</p>
<p>text14</p>
<p>text15</p>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
在Visual Studio 2012及更高版本中,您可以使用XML并转到Edit - &gt;选择性粘贴 - &gt;将XML粘贴为类。如果你没有它,网上有一些工具可以帮助你。
只是为了帮助转换,这是XML粘贴的结果:
/// <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;
}
}
}
使用的代码只是:
XDocument test = XDocument.Load("sportxml.xml");
var result = XMLHelper.FromXML<XmlSports>(test);