我从SOAP服务中收到一个xml,然后将其转换为字符串并根据模式进行验证。验证顺利进行,但当我尝试将其放入数据集以将其放入我的datagridview时,它表示缺少根元素。以下是我的代码,
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
XmlReaderSettings xmlReaderSttngs = new XmlReaderSettings();
XmlDocument xmlDoc = new XmlDocument();
DateTime date = dateTimePicker1.Value;
SoapWebReference.SOAPWebService SoapService= new SoapWebReference.SOAPWebService();
string xmlString = SoapService.getSchedule(instructorId, date).OuterXml.ToString();
xmlReaderSttngs.ValidationType = ValidationType.Schema;
xmlReaderSttngs.Schemas.Add("","SoapSchema.xsd");
StringReader reader = new StringReader(xmlString);
XmlReader xReader;
try
{
xReader = XmlReader.Create(reader, xmlReaderSttngs);
xmlDoc.Load(xReader);
showSchedule(reader);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void showSchedule(StringReader reader)
{
DataSet dt = new DataSet();
dt.ReadXml(reader);
dataGridView1.DataSource = dt.Tables[0];
}
令人惊讶的是,当我在没有验证的情况下将字符串加载到数据集时,它会加载到数据集并显示在gridview中。我对此感到困惑,请帮我解决这个问题。
答案 0 :(得分:1)
传递给StringReader
的{{1}}位置已经结束,因为之前已经用它来读取整个字符串。您可以改为传递实际字符串,并为填充showScheduler()
的任务创建单独的StringReader
:
DataSet