|
Выгрузка XML из DataSet
#33980510
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: 140002
Сообщения: 11 728
|
|
Добрый день!
Есть схема (xsd), загружаю ее во вновь созданный DataSet, заполняю DataSet данными с сервера SQL и сохраняю в xml (ниже приведен текст на C#).
Проблема в том, что
1. В xml-документ добавляется корневой тег "NewDataSet", который мне ну совершенно не нужен.
2. В оригинальной схеме присутствует sequence в сложном типе (еще и унаследованном от сложного типа, лежащего во внешней схеме). Данные же, которые DataSet.WriteXml сохраняет в файле, этой схеме не соответствуют (sequence нарушается).
Знатоки, подскажите как при сохранении в XML добиться, что бы данные в конечном файле полностью соответствовали указанной мной схеме.
Схемы идут далее вложением.
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
|
|
|