public class ROWDATA
{
[XmlElement(ElementName = "ROW")]
public List<ROW> PerList = new List<ROW>();
} public class ROW
{
public string GAMEID { get; set; }
public string GAMENAME { get; set; }
public string AREA { get; set; }
public string SERVER { get; set; }
public string SX { get; set; }
public string AREAFLAG { get; set; }
public string SERVERFLAG { get; set; }
}
using (System.IO.FileStream file = File.OpenRead("row.xml"))
{
XmlSerializer xmlSer = new XmlSerializer(typeof(ROWDATA));
ROWDATA list = (ROWDATA)xmlSer.Deserialize(file);
MessageBox.Show(list.PerList[0].GAMENAME);
}
{
[XmlElement(ElementName = "ROW")]
public List<ROW> PerList = new List<ROW>();
} public class ROW
{
public string GAMEID { get; set; }
public string GAMENAME { get; set; }
public string AREA { get; set; }
public string SERVER { get; set; }
public string SX { get; set; }
public string AREAFLAG { get; set; }
public string SERVERFLAG { get; set; }
}
using (System.IO.FileStream file = File.OpenRead("row.xml"))
{
XmlSerializer xmlSer = new XmlSerializer(typeof(ROWDATA));
ROWDATA list = (ROWDATA)xmlSer.Deserialize(file);
MessageBox.Show(list.PerList[0].GAMENAME);
}
<ROW>
<GAMEID>220101</GAMEID>
<GAMENAME>传奇世界</GAMENAME>
<AREA>122区潜龙在渊</AREA>
<SERVER></SERVER>
<SX>1860.01</SX>
<AREAFLAG/>
<SERVERFLAG/>
</ROW>
改成
<ROW>
<ROW>
<GAMEID>220101</GAMEID>
<GAMENAME>传奇世界</GAMENAME>
<AREA>122区潜龙在渊</AREA>
<SERVER></SERVER>
<SX>1860.01</SX>
<AREAFLAG/>
<SERVERFLAG/>
</ROW>
</ROW>
(也就是多加一层的ROW)就可以用以上的方法读取另外我的数据源是读取网络上的,只是他返回的是xml数据格式
你看清没有,需要2个类,ROWDATA类和ROW类。
反序列化时按ROWDATA类型反序列化,得到一个ROWDATA类型对象。
ROWDATA类型对象里包含了List<ROW>对象,就是ROW类型对象集合。
循环遍历下就全出来了!
把XML格式改成如下:
<ArrayOfROW>
<ROW>
<GAMEID>220101</GAMEID>
<GAMENAME>传奇世界</GAMENAME>
<AREA>122区潜龙在渊</AREA>
<SERVER></SERVER>
<SX>1860.01</SX>
<AREAFLAG/>
<SERVERFLAG/>
</ROW>
<ROW>
<GAMEID>220101</GAMEID>
<GAMENAME>传奇世界</GAMENAME>
<AREA>1区龙行天下(上海)</AREA>
<SERVER></SERVER>
<SX>1662</SX>
<AREAFLAG/>
<SERVERFLAG/>
</ROW>
</ArrayOfROW> 反序列化:
using (System.IO.FileStream file = File.OpenRead("List.xml"))
{
XmlSerializer xmlSer = new XmlSerializer(typeof(List<ROW>));
List<ROW> list = (List<ROW>)xmlSer.Deserialize(file);
MessageBox.Show(list[0].GAMENAME);
}
StringReader sr = new StringReader(xmlContent);
XmlSerializer xmlSer = new XmlSerializer(typeof(ROWDATA));
ROWDATA list = (ROWDATA)xmlSer.Deserialize(sr);
MessageBox.Show(list.PerList[0].GAMENAME);