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);
}

解决方案 »

  1.   

    谢谢回复,不过解决不了哦。我已经有尝试在ROWDATA类里面声明一个List类型的ROW,但这种方法不行。除非把数据源里面的格式改下,比如由
     <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.   

    只要你的XML数据格式是固定的,为什么不行?我给你的办法肯定能读取到的。
    你看清没有,需要2个类,ROWDATA类和ROW类。
    反序列化时按ROWDATA类型反序列化,得到一个ROWDATA类型对象。
    ROWDATA类型对象里包含了List<ROW>对象,就是ROW类型对象集合。
    循环遍历下就全出来了!
      

  3.   

    如果返回XML格式是你自己定的,那可以有更简单的方法。
    把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);
    }
      

  4.   

    那你还得用第一个发给你的先设下断点或打印xmlContent 看看有没有乱码,数据是否完整。再用下面这段代码测试下
    StringReader sr = new StringReader(xmlContent);
    XmlSerializer xmlSer = new XmlSerializer(typeof(ROWDATA));
    ROWDATA list = (ROWDATA)xmlSer.Deserialize(sr);
    MessageBox.Show(list.PerList[0].GAMENAME);