powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XML сериализация DataSet
14 сообщений из 14, страница 1 из 1
XML сериализация DataSet
    #38847645
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два DataTable tab1 (a,c) и tab2 (a,d) , включены в DataSet и там объеденные DataRelation.

Задача сериализовать две таблицы в XML, так чтобы в одном узле (значение PK) была запись из tab1 и соотвествующая ей запись(и) из tab2.
Заранее спс!
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847654
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanez,

Сейчас все отдыхают. Не знаю возьмется ли кто за 'спс'. Возможно, Вам сразу стоило в раздел Работа.
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847656
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,
это учебный пример. Для раздела работа все сложнее)) . В общем-то основной вопрос форуму - может ли как-то учесть XmlSerializer связи в DataRelation при сериализации DataSet ?
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847665
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanez,

достаточно в relation выставить свойство Nested=true
штатный DataSet.WriteXML всё сделает
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847688
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, очень даже в точку)) Спасибо!

Еще вопрос - можно ли как-то указать (по аналогии с классами) какие поля не надо сериализовать?
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847690
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezЕще вопрос - можно ли как-то указать (по аналогии с классами) какие поля не надо сериализовать?

да, можно - задать колонке свойство
Код: c#
1.
ColumnMapping = MappingType.Hidden
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847695
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
и это помогло, огромнейшее спасибо!

остался вопрос как добавить уровень вложенности: сейчас у меня сейчас выгружается как на картинке только без уровня <Table>. А нужно каждую таблицу вложить в <Table>: <Table> <Table1>.....</Table1> <Table1>.....</Table1></Table>.
Название <Table> - не меняется, для всех таблиц одинаковое...
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847753
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanez,

результат пропустить через xslt трансформацию
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847767
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

это как?
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847786
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezИзопропил,

это как?

как-то вот так http://msdn.microsoft.com/ru-ru/library/14689742(v=vs.110).aspx
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847838
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
че-то не разобраться. Если не сложно - пример кода. Пусть файле 1.xls уже структура :
<Document>
<Tab1>
-----
-----
</Tab1>
<Tab2>
-----
-----
</Tab2>
<Tab2>
-----
-----
</Tab2>
</Document>
<Document>
-----
-----
-----
</Document>
Как ее преобразовать в такую:
<Document>
<Table>
<Tab1>
-----
-----
</Tab1>
</Table>
</Table>

<Tab2>
-----
-----
</Tab2>
<Tab2>
-----
-----
</Tab2>
</Table>
</Document>
<Document>
-----
-----
-----
</Document>
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847852
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanez,

Nested=true вложит Tab2 в Tab1, а не разместит после

В этом случае трансформация может выглядеть так
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<xsl:template match="Tab1">
<Document>
<Table>
<xsl:copy><xsl:apply-templates/></xsl:copy>
</Table>
<Table>
<xsl:for-each select="Tab2">
<xsl:copy><xsl:apply-templates/></xsl:copy>
</xsl:for-each>
</Table>
</Document>
</xsl:template>
<xsl:template match="Tab2"/>
</xsl:stylesheet>			



Как с XslCompiledTransform работать - в MSDN описано с примерами
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847903
alanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.
авторNested=true вложит Tab2 в Tab1, а не разместит после - это я учел.
В рабочей реализации есть "корневая таблица" с полями MappingType.Hidden , к ней цепляются tab1 и tab2.

2.
Тяжело сходу освоить (. Пришлось переписать с XmlTextWriter и дальнейшими вставками "как надо" ...
3.
Еще вопрос: как изменить имя поля при выгрузке в xml?

p/s Изопропил спасибо, здорово помог.
...
Рейтинг: 0 / 0
XML сериализация DataSet
    #38847933
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alanezЕще вопрос: как изменить имя поля при выгрузке в xml?
никак, гвоздями прибито.

Трансформация - тривиальна, например
Код: xml
1.
2.
3.
<xsl:template match="Tab2/d">
<D><xsl:apply-templates select="node()"/></D>
</xsl:template>




alanezТяжело сходу освоить
если освоить - массу задач можно решить декларативно
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / XML сериализация DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]