Reputation: 2352
Experts ! i am very new to XML. However, a webapp collects data in XML form and i have to display it (and enable edit) in an ASP.Net GridView. i need your help, please.
<?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>
Upvotes: 2
Views: 8872
Reputation: 63966
Easiest way I can think of to bind the XML to a gridview is to to load the xml to a DataSet and then bind the DataSet to the gridview:
StringReader sr= new StringReader(xml);
DataSet ds = new DataSet();
ds.ReadXml(sr);
Gridview.DataSource=ds.Tables[1];
Gridview.DataBind();
Reason for doing ds.Tables[0]
is that your example contains 2 sets of Answers
and when you load the DataSet with your XML, the first DataTable will contain as many rows as sets of answers you have on your XML while the second table will contain all the rows from all the set of answers.
The way LinqPad displays it is as follows:
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();
Upvotes: 5