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

Moh*_*mal 2 xml asp.net gridview

专家!我是XML的新手.但是,webapp以XML格式收集数据,我必须在ASP.Net GridView中显示它(并启用编辑).我需要你的帮助.

<?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>
Run Code Online (Sandbox Code Playgroud)

Ica*_*rus 5

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

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

Gridview.DataSource=ds.Tables[1];
Gridview.DataBind();
Run Code Online (Sandbox Code Playgroud)

这样做的原因ds.Tables[0]是您的示例包含2组,Answers当您使用XML加载DataSet时,第一个DataTable将包含与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();
Run Code Online (Sandbox Code Playgroud)