Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выгрузка XML из DataSet / 1 сообщений из 1, страница 1 из 1
12.09.2006, 12:35
    #33980510
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка XML из DataSet
Добрый день!

Есть схема (xsd), загружаю ее во вновь созданный DataSet, заполняю DataSet данными с сервера SQL и сохраняю в xml (ниже приведен текст на C#).

Проблема в том, что
1. В xml-документ добавляется корневой тег "NewDataSet", который мне ну совершенно не нужен.
2. В оригинальной схеме присутствует sequence в сложном типе (еще и унаследованном от сложного типа, лежащего во внешней схеме). Данные же, которые DataSet.WriteXml сохраняет в файле, этой схеме не соответствуют (sequence нарушается).

Знатоки, подскажите как при сохранении в XML добиться, что бы данные в конечном файле полностью соответствовали указанной мной схеме.

Схемы идут далее вложением.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
      string query = @" 

        select 
          ED101_Id = PLP_R_Unload_RKC_ED101_CashID,
          EDNo, EDDate, EDAuthor, PaytKind, [Sum], TransKind,
          Priority, ChargeOffDate, ReceiptDate, SystemCode, Purpose
        from PLP_R_Unload_RKC_ED101_Cash

        select AccDocNo, AccDocDate, ED101_Id = ED101.PLP_R_Unload_RKC_ED101_CashID
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_AccDoc_Cash AccDoc on ED101.PLP_R_Unload_RKC_ED101_CashID = AccDoc.PLP_R_Unload_RKC_ED101_CashID

        select Payer_Id = PLP_R_Unload_RKC_Payer_CashID, INN, PersonalAcc, KPP, [Name], ED101_Id = ED101.PLP_R_Unload_RKC_ED101_CashID
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_Payer_Cash Payer on ED101.PLP_R_Unload_RKC_ED101_CashID = Payer.PLP_R_Unload_RKC_ED101_CashID

        select Payee_Id = PLP_R_Unload_RKC_Payee_CashID, INN, PersonalAcc, KPP, [Name], ED101_Id = ED101.PLP_R_Unload_RKC_ED101_CashID
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_Payee_Cash Payee on ED101.PLP_R_Unload_RKC_ED101_CashID = Payee.PLP_R_Unload_RKC_ED101_CashID

        select BIC, CorrespAcc, Payer_Id = PLP_R_Unload_RKC_Payer_CashID, Payee_Id = null
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_Bank_Payer_Cash Bank_Payer on ED101.PLP_R_Unload_RKC_ED101_CashID = Bank_Payer.PLP_R_Unload_RKC_ED101_CashID
          inner join PLP_R_Unload_RKC_Payer_Cash Payer on ED101.PLP_R_Unload_RKC_ED101_CashID = Payer.PLP_R_Unload_RKC_ED101_CashID
        union all
        select BIC, CorrespAcc, Payer_Id = null, Payee_Id = PLP_R_Unload_RKC_Payee_CashID 
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_Bank_Payee_Cash Bank_Payee on ED101.PLP_R_Unload_RKC_ED101_CashID = Bank_Payee.PLP_R_Unload_RKC_ED101_CashID
          inner join PLP_R_Unload_RKC_Payee_Cash Payee on ED101.PLP_R_Unload_RKC_ED101_CashID = Payee.PLP_R_Unload_RKC_ED101_CashID

        select DrawerStatus, CBC, OKATO, PaytReason, TaxPeriod, DocNo, DocDate, TaxPaytKind, ED101_Id = ED101.PLP_R_Unload_RKC_ED101_CashID
        from PLP_R_Unload_RKC_ED101_Cash ED101
          inner join PLP_R_Unload_RKC_DepartmentalInfo_Cash DepartmentalInfo on ED101.PLP_R_Unload_RKC_ED101_CashID = DepartmentalInfo.PLP_R_Unload_RKC_ED101_CashID

";

      using (SqlConnection cn = new SqlConnection("server=(local);Database=Test;Integrated Security=SSPI;"))
      {
        SqlCommand cmd = cn.CreateCommand();
        cmd.CommandText = query;
        cmd.CommandType = CommandType.Text;

        cn.Open();

        SqlDataReader rdr = cmd.ExecuteReader();

        DataSet ds = new DataSet();

        ds.ReadXmlSchema(@"cbr_ed_v1.1.2.xsd");

        ds.Load(rdr, LoadOption.Upsert, new string[] { "ED101", "AccDoc", "Payer", "Payee", "Bank", "DepartmentalInfo" });

        ds.WriteXml(@"e:\work\qq.xml");

        ds.Dispose();

      }


    }


--
WBR, Roman S. Golubin
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выгрузка XML из DataSet / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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