远程读取的XML格式如下
<?xml version="1.0" encoding="gb2312"?>
<SSRequest>
<Request username="sdf" date="2010-05-30" />
</SSRequest>我的实体
public class Request
    {
        public string Username 
        {
            get;
            set;
        }
        public string Date        {
            get;
            set;
        }
    }
查过XmlAttribute,貌似这种情况下要定义2个实体。请教如何从XML变成我想要的实体?
或者有工具能从Xml生成对应层次的实体吗?

解决方案 »

  1.   

        public class SSRequest
        {
            [XmlElement("Request")]
            public Request request { get; set; }
        }
        public class Request
        {
            [XmlAttribute("username")]
            public string username { get; set; }
            [XmlAttribute("date")]
            public string date { get; set; }
        }            string str = @"<?xml version=""1.0"" encoding=""gb2312""?>
    <SSRequest>
    <Request username=""sdf"" date=""2010-05-30"" />
    </SSRequest>";
                XmlSerializer xml = new XmlSerializer(typeof(SSRequest));
                MemoryStream ms = new MemoryStream(Encoding.GetEncoding("gb2312").GetBytes(str));
                SSRequest ssrequest = xml.Deserialize(ms) as SSRequest;
                ms.Dispose();
                Console.WriteLine(ssrequest.request.username + "==" + ssrequest.request.date);
    //sdf==2010-05-30
      

  2.   

    谢谢1楼。。是不是一定要建立多个实体和xml的层次对应起来?
    <a>
    <b>
    <c att="2"><c>
    <b>
    <a>
    我只需要节点C里面的内容。。但实体是不是一定要建立a和b?
      

  3.   

    你可以用 XmlDocument 来做,自己解析xml就可以了
      

  4.   

     或者实现ISerializable 接口
      

  5.   


    你觉得这是表达一个实体的xml么?就像你在问题中写的那种 SSRequest 才是一个实体。每一个xml都只能有一个实体。
      

  6.   

    推荐标记Serilizable代码属性然后用XmlSerializer