这个挺规则的啊,就是缺了一个root的element。下面的代码加入<xml></xml>作为root
//test xml
string input = @"<xml>" +
@"<code>0</code>" +
@" <message>Success</message>" +
@"<roles>" +
@"<role><name>Role1</name><selected>false</selected></role>" +
@"<role><name>Role2</name><selected>true</selected></role>" +
@"</roles>" +
@"</xml>"; XmlSerializer serializer = new XmlSerializer(typeof(Response), "");
using (TextReader reader = new StringReader(input))
{
Response result = serializer.Deserialize(reader) as Response;
} [Serializable]
[XmlRoot(ElementName= "xml")]
public class Response
{
public int code { get; set; }
public string message { get; set; } [XmlArrayItem(typeof(role))]
public List<role> roles { get; set; }
} [Serializable]
public class role
{
public string name { get; set; }
public bool selected { get; set; }
}
//test xml
string input = @"<xml>" +
@"<code>0</code>" +
@" <message>Success</message>" +
@"<roles>" +
@"<role><name>Role1</name><selected>false</selected></role>" +
@"<role><name>Role2</name><selected>true</selected></role>" +
@"</roles>" +
@"</xml>"; XmlSerializer serializer = new XmlSerializer(typeof(Response), "");
using (TextReader reader = new StringReader(input))
{
Response result = serializer.Deserialize(reader) as Response;
} [Serializable]
[XmlRoot(ElementName= "xml")]
public class Response
{
public int code { get; set; }
public string message { get; set; } [XmlArrayItem(typeof(role))]
public List<role> roles { get; set; }
} [Serializable]
public class role
{
public string name { get; set; }
public bool selected { get; set; }
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<code>0</code>
<message>Success</message>
<roles>
<role>
<name>Role1</name>
<selected>false</selected>
</role>
<role>
<name>Role2</name>
<selected>true</selected>
</role>
</roles>
</root>
DataSet dt = new DataSet();
dt.ReadXml("tt.xml");
string code=dt.Tables["root"].Rows[0]["code"].ToString();
string message = dt.Tables["root"].Rows[0]["message"].ToString();
string name1 = dt.Tables["role"].Rows[0]["name"].ToString();
string selected1 = dt.Tables["role"].Rows[0]["selected"].ToString();
string name2 = dt.Tables["role"].Rows[1]["name"].ToString();
string selected2 = dt.Tables["role"].Rows[1]["selected"].ToString();