![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Добрый день.
У меня есть XML - файл с некоторыми данными из программы. Так же есть 2 xslt файла, которые, как я понял, определяют, в каком формате этот XML будет отображаться. В первом xslt - описание самой таблицы, во втором - строк, находящихся в таблице. Вопрос в том, можно ли каким - то образом все это поместить в dataGridView посредством dataSet или еще чего - либо? Просто не силен в XML и вообще не уверен, правильно ли я объяснил имеющуюся проблему. Это сообщение отредактировал(а) m9yt - 24.5.2013, 12:13 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Датасет, равно как и дататэйбл умеют сохранять данные в хмл, а так же загружать их из хмл. Этим можно воспользоваться, только придется написать преобразование, которое твой хмл приведет в вид, понятный датесету или дататейблу. Формат там довольно простой, просто заполни табличку данными и вызови метод WriteXml, посмотри полученный документ, там все понятно. Дальше напиши xslt, который приведет хмл-данные в нужный вид. Это если надо иметь возможность настроить отображение. А так вообще поколдуй вот с этим
http://msdn.microsoft.com/query/dev11.quer...r-.NETFramework -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Так у меня же уже есть готовые xslt - файлы...
Просто суть в том, что в этом XML находятся данные разных частей программы, и эти xslt, как я понял, вычленяют нужную мне в конкретном случае информацию для отображения в dataGridView. Это сообщение отредактировал(а) m9yt - 17.5.2013, 12:21 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Если они делают именно то, о чем я написал, то просто у датасета вызови ReadXml, передай ему адрес результата преобразования и все должно загрузиться. Если эти файлы делают что-то другое, то узнай что именно Возможно не вычленяют, а именно приводят к виду, понятному датасету. Попробуй загрузить. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Вот я и не пойму, как это преобразование вообще делается, используя XSLT - файлы. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Тебе надо его выполнить программно или можно с помощью студии? Добавлено через 1 минуту и 46 секунд Программно это делается с помощью вот этого класса http://msdn.microsoft.com/query/dev11.quer...r-.NETFramework -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Пробую сделать так:
Это сообщение отредактировал(а) m9yt - 17.5.2013, 13:23 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Учитывая, что я не вижу результата преобразования, сказать что-то по этому поводу я вряд ли могу. Хотел выполнить преобразование, но поскольку хмл-файл неполный, ессно этого не сделаешь. Структура файла должна быть примерно такой: корневой элемент имеет имя датасета(вроде бы); в него вложены элементы, имеющие такое же имя, как у таблицы и каждый предствляет отдельную строку таблицы; ну и в элементах-строках размещаются элементы, имена которых совпадают с именами столбцов, это ячейки и их содержимое - значение каждой ячейки. Если структура файла другая - может ничего не получиться. Хотя можно попробовать поработать с классом, на который я дал ссылку в первом посте. Я помню со старым гридом(из первого фреймворка) он прекрасно работал и даже отображал документ в виде сворачивающихся блоков строк, с гридвюьем я этот класс не пользовал, так что не знаю что будет. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| m9yt |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
В общем, после преобразования одним из файлов получил следующие xml-ки:
По таблицам:
По строкам в таблицах:
Теперь нужно организовать группировку строк в соответствующие таблицы, используя ID. Каким образом можно наиболее просто решить данную задачу? Это сообщение отредактировал(а) m9yt - 29.5.2013, 14:05 |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Наиболее просто было сразу выполнить преобразование таким образом, чтобы получить готовый результат. Можно, конечно, преобразовать и результат предыдущего преобразования, только смысла в этом нет.
Группировку в xslt можно сделать как описано здесь http://erum.ru/19.htm -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
А можно как - то без XSLT обойтись? Например, сохранить где - то все id таблиц, а потом в цикле каждый id сравнивать с id, указанным в описании строки, и тем самым формировать структуру dataGridView?
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Да без проблем. Просто этот язык как раз для таких задач предназначен и очень удобен для преобразования хмл.
В принципе есть возможность реализовать часть программной логики на шарпе и использовать ее в хслт. Но если тебе это не подходит, то можно и полностью на шарпе. Если использовать последний вариант, то какие с этим проблемы? Что не понятно? Вообще, у использования хслт в таких задачах есть еще одно важное преимущество: документ хслт можно менять, не затрагиваю программный код, а значит не только во время разработки, так что я бы рассмотрел этот вариант внимательнее. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |