Вопрос
Какой наилучший способ прочитать Xml либо из XmlDocument, либо из String в DataGrid?
Должен ли xml быть в определенном формате?
Должен ли я использовать DataSet в качестве посредника?
Я работаю над клиентом, который использует Xml, отправленный с Сервера, который разрабатывается одним из моих коллег, я могу заставить его изменить формат Xml в соответствии с требованиями DataGrid.
Решение 4
У нас есть частичный ответ на получение данных в dataset, но он считывает их как набор таблиц с реляционными ссылками.
DataSet ds = new DataSet();
XmlTextReader xmlreader = new XmlTextReader(xmlSource, XmlNodeType.Document, null);
ds.ReadXml(xmlreader);
Другие советы
Это зависит от того, на какой версии .NET вы работаете.Если вы можете использовать Linq2Xml, то это несложно.Просто создайте XDocument и выберите дочерние узлы в виде списка анонимного типа.
Если вы не можете использовать Linq2Xml, то у вас есть несколько других вариантов.Использование набора данных - это одно, это может работать хорошо, но это зависит от получаемого вами XML-файла.Другим вариантом является создание класса, описывающего сущность, которую вы будете считывать из xml, и пошаговое прохождение XML-узлов вручную.Третьим вариантом было бы использовать сериализацию Xml и десериализовать xml в список объектов.Это может хорошо работать до тех пор, пока у вас есть классы, настроенные для этого.
Самым простым вариантом будет либо создать XDocument, либо создать DataSet, как вы предлагаете.
Очевидно, что ваш XML-файл должен быть действительным :)
После этого определите набор данных, определите datagrid.Используйте метод ReadXml для набора данных, чтобы заполнить набор данных вашим XML, завершите с привязкой к данным, и все готово.
DataSet myDataSet = new DataSet();
myDataSet .ReadXml(myXMLString);
myDataGrid.DataSource = myDataSet ;
myDataGrid.DataBind();
Вы можете просто использовать объект XmlDataSource в качестве источника данных сетки.Это позволяет вам задать файл и XPath, чтобы выбрать XML, который является источником ваших данных.Затем вы можете использовать <%# XPath="blah"%> функция для явной записи ваших данных, если хотите.