Самый простой способ связать XML с видом сетки - это загрузить XML в DataSet, а затем связать DataSet с видом сетки:
StringReader sr= new StringReader(xml);
DataSet ds = new DataSet();
ds.ReadXml(sr);
Gridview.DataSource=ds.Tables[1];
Gridview.DataBind();
Причина для выполнения ds.Tables[0]
заключается в том, что ваш пример содержит 2 набора Answers
, и когда вы загружаете DataSet с вашим XML, первый DataTable будет содержать столько строк, сколько наборов ответов у вас есть в XML, а второй таблица будет содержать все строки из всего набора ответов.
Способ отображения LinqPad выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/IJTIc.png)
UPDATE:
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();