Вопрос

Какой наилучший способ прочитать 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"%> функция для явной записи ваших данных, если хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top