Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
mDanilov
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 10
#1

Некорректная конвертация в байтовый массив архивированных данных XML

15.09.2015, 15:50. Просмотров 234. Ответов 3
Метки нет (Все метки)

Пишу клиентскую программу, которая берет данные из БД, конвертирует в Xml-ку, архивирует Zip'ом, превращает в байтовый массив и отправляет на сервак. В 99% случаев всё гладко.
В 1% серверная часть возвращает ошибку "Не найден корневой элемент"
Пишу на C# Net 3.5. Windws XP Service Pack 3 версия 2002

Прилагается код и данные, на которых возвращается ошибка "Корневой элемент не найдет".
Как серверная часть обрабатывает данные - не знаю.
Xml-ка вроде впорядке, данные как данные. Не понимаю, в чем проблема.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private static byte[] Compression(DataSet ds_)
        {
            try
            {
                using (MemoryStream msCompressed = new MemoryStream())
                {
                    using (GZipStream zip = new GZipStream(msCompressed, CompressionMode.Compress))
                    {
                        ds_.WriteXml(zip, XmlWriteMode.WriteSchema);
                        return msCompressed.GetBuffer();
                    }
                }
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
                Loader.Log(ex.Message);
                return null;
            }
        }
Данные - это набор накладных. Шапка + позиции. В прилагающемся файле - одна шапка и 8 позиций.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <OrderHeader>
    <Id>2018</Id>
    <DhId>-1</DhId>
    <KId>22525</KId>
    <Date>2015-09-15T00:00:00+05:00</Date>
    <OsId>0</OsId>
    <DateSale>2015-09-16T00:00:00+05:00</DateSale>
    <mp_Id>0</mp_Id>
    <Comments />
  </OrderHeader>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>890</IId>
    <Box_count>2</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>9.05</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>1094</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>90.5652</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>9717</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>16.04</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>10006</IId>
    <Box_count>2</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>15.01</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>10780</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>11.57</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>12407</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>18.91</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>18230</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>17.277</Price>
    <OpId>3</OpId>
  </OrderBody>
  <OrderBody>
    <OhId>2018</OhId>
    <IId>18232</IId>
    <Box_count>1</Box_count>
    <Block_count>0</Block_count>
    <Piece_count>0</Piece_count>
    <Price>17.277</Price>
    <OpId>3</OpId>
  </OrderBody>
</NewDataSet>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 15:50
Ответы с готовыми решениями:

Распарсить байтовый массив
Уважаемые форумчане подскажите пожалуйста такой вопрос , имеется байтовый...

Ссылка на байтовый массив
Уважаемые форумчане , подскажите как правильно будет передать адрес ...

При попытке перевести строку в байтовый массив получаются одинаковые значения в массиве
При попытке перевести строку в байтовый массив получаю одинаковые значения в...

Некорректная передача данных
передаю запрос на добавление данных в mysql. строка берётся из texBox , которая...

Конвертация данных из БД
Помогите плез, как автоматизировать преобразования данных из бд в нужный тип,...

3
OwenGlendower
Супер-модератор
Эксперт .NET
9049 / 8001 / 3419
Регистрация: 17.03.2014
Сообщений: 15,816
Записей в блоге: 1
15.09.2015, 16:46 #2
mDanilov, попробуй вот так сжимать:
C#
1
2
3
4
5
6
7
using (MemoryStream msCompressed = new MemoryStream())
using (GZipStream zip = new GZipStream(msCompressed, CompressionMode.Compress))
{
    ds_.WriteXml(zip, XmlWriteMode.WriteSchema);
    zip.Flush();
    return msCompressed.ToArray();
}
1
mDanilov
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 10
17.09.2015, 09:58  [ТС] #3
Чет не помогло. Буду думать. Можете кинуть хороший мануал по Stream'ам?
0
OwenGlendower
Супер-модератор
Эксперт .NET
9049 / 8001 / 3419
Регистрация: 17.03.2014
Сообщений: 15,816
Записей в блоге: 1
17.09.2015, 12:48 #4
mDanilov, ничего кроме MSDN не могу посоветовать. На твоем месте я бы добавил протоколирование в приложение чтобы видеть какие байты пришли, в какой XML они были преобразованы. Тогда будет легче найти причину ошибки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2015, 12:48

Преобразовать трехмерный байтовый массив в одномерный байтовый массив
При запуске функции выдает ошибку: индекс находится за пределами массива....

Преобразовать одномерный байтовый массив в трехмерный байтовый массив
При выполнении функции выпадает исключение: &quot;Выдано исключение типа...

ASP.NET MVC 2 Конвертация базы данных, созданной VS 2010 в xml-файл
Я создал MVC-приложение. с помощью VS 2010 создал базу данных с расширением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru