如何将XML数据显示到ASP.NETGridView中?

如何将XML数据显示到ASP.NETGridView中?,asp.net,xml,gridview,Asp.net,Xml,Gridview,专家们! 我对XML非常陌生。但是,webapp以XML形式收集数据,我必须在ASP.NETGridView中显示(并启用编辑)。我需要你的帮助 <?xml version="1.0"?> <Answers> <AnswerSet> <Answer questionId="MRN">4444</Answer> <Answer questionId="FName">test</Answer> <Answe

专家们! 我对XML非常陌生。但是,webapp以XML形式收集数据,我必须在ASP.NETGridView中显示(并启用编辑)。我需要你的帮助

<?xml version="1.0"?>
<Answers>
  <AnswerSet>
<Answer questionId="MRN">4444</Answer>
<Answer questionId="FName">test</Answer>
<Answer questionId="LName">patient</Answer>
<Answer questionId="AddressPt">blah blah</Answer>
<Answer questionId="Governorate">xxxx</Answer>
<Answer questionId="InitialCSF">Negative</Answer>
<Answer questionId="Diagnosis"></Answer>
<Answer questionId="Description">
</Answer>
  </AnswerSet>
  <AnswerSet>
<Answer questionId="MRN">1</Answer>
<Answer questionId="FName">1</Answer>
<Answer questionId="LName">1</Answer>
<Answer questionId="AddressPt">1</Answer>
<Answer questionId="InitialCSF">Positive</Answer>
<Answer questionId="Diagnosis">dx</Answer>
<Answer questionId="Description">
</Answer>
  </AnswerSet>
 </Answers>

4444
测试
病人
废话
xxxx
消极的
1.
1.
1.
1.
肯定的
dx

我能想到的将XML绑定到gridview的最简单方法是将XML加载到数据集,然后将数据集绑定到gridview:

StringReader sr= new StringReader(xml); 
DataSet ds = new DataSet();
ds.ReadXml(sr);

Gridview.DataSource=ds.Tables[1];
Gridview.DataBind();
之所以使用
ds.Tables[0]
是因为您的示例包含两组
答案
,当您用XML加载数据集时,第一个数据表将包含与XML上答案集相同的行数,而第二个表将包含来自所有答案集的所有行

LinqPad的显示方式如下所示:

更新:

string xml=@"<?xml version=""1.0""?>
<Answers>
  <AnswerSet>
<Answer questionId=""MRN"">4444</Answer>
<Answer questionId=""FName"">test</Answer>
<Answer questionId=""LName"">patient</Answer>
<Answer questionId=""AddressPt"">blah blah</Answer>
<Answer questionId=""Governorate"">xxxx</Answer>
<Answer questionId=""InitialCSF"">Negative</Answer>
<Answer questionId=""Diagnosis""></Answer>
<Answer questionId=""Description"">
</Answer>
  </AnswerSet>
  <AnswerSet>
<Answer questionId=""MRN"">1</Answer>
<Answer questionId=""FName"">1</Answer>
<Answer questionId=""LName"">1</Answer>
<Answer questionId=""AddressPt"">1</Answer>
<Answer questionId=""InitialCSF"">Positive</Answer>
<Answer questionId=""Diagnosis"">dx</Answer>
<Answer questionId=""Description"">
</Answer>
  </AnswerSet>
 </Answers>";
StringReader sr= new StringReader(xml); 
 DataSet ds = new DataSet();
 ds.ReadXml(sr);
 ds.Merge(ds,true);
 gridview.DataSoure=ds.Tables[1];
     gridview.DataBind();
stringxml=@”
4444
测试
病人
废话
xxxx
消极的
1.
1.
1.
1.
肯定的
dx
";
StringReader sr=新的StringReader(xml);
数据集ds=新数据集();
ReadXml(sr);
ds.Merge(ds,true);
gridview.datasource=ds.Tables[1];
gridview.DataBind();

感谢您的回答,我很高兴您尝试了我的数据。我很困惑,例如我找不到“字符串阅读器”。我知道这是我的错:请更详细地告诉我stringreader在System.IO名称空间中。如果使用System.IO执行
您应该能够创建此类的实例。我们的用户可以完全限定它
System.IO.StringReader sr=new System.IO.StringReader()@mokokamello我已经提供了我使用的代码。请看一下更新。@mokokamello我的示例代码是从控制台应用程序运行的,而不是从Web应用程序运行的。我再次更改了代码,以便您可以在Web应用程序上使用它,但您需要将
gridview
变量名更改为gridview变量的实际名称。@mokokamello XMLDataSource看起来很适合您的需要。这里有一些很好的例子。我真的不知道,但看起来是个更好的选择。不去尝试就很难说。