Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Обработка base64 большого размера / 5 сообщений из 5, страница 1 из 1
22.03.2007, 22:05
    #34410065
as361
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка base64 большого размера
Доброго дня/ночи.
Потихоньку начали работать на с# с xml и столкнулись вот с такой проблемой:

Есть входные сообщения, содержащие элемент в кодировке base64 размером порядка 10-200 Mb.
Надо провалидировать эти сообщения на соответствие xsd схемам.
Все идет хорошо до тех пор, пока валидатор (мы используем XmlValidatingReader) не доходит до этого самого base64 элемента. При его чтении отжирается объем памяти раз в 10..12 больше чем размер этого элемента. Если размер исходного сообщения > 60..70 Mb, происходит System.OutOfMemoryException и обработка прекращается.
Вопрос: нет ли каких-либо способов все таки выполнить валидацию таких здоровенных base64 элементов?

Спасибо.
...
Рейтинг: 0 / 0
23.03.2007, 12:37
    #34411326
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка base64 большого размера
вырезать, а потом – валидировать.
...
Рейтинг: 0 / 0
24.03.2007, 22:34
    #34413748
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка base64 большого размера
as361Доброго дня/ночи.
Потихоньку начали работать на с# с xml и столкнулись вот с такой проблемой:

Есть входные сообщения, содержащие элемент в кодировке base64 размером порядка 10-200 Mb.
Надо провалидировать эти сообщения на соответствие xsd схемам.
Все идет хорошо до тех пор, пока валидатор (мы используем XmlValidatingReader) не доходит до этого самого base64 элемента. При его чтении отжирается объем памяти раз в 10..12 больше чем размер этого элемента. Если размер исходного сообщения > 60..70 Mb, происходит System.OutOfMemoryException и обработка прекращается.
Вопрос: нет ли каких-либо способов все таки выполнить валидацию таких здоровенных base64 элементов?

Спасибо.

Используйте поточные средства обработки данных. (XmlTextReader например)
...
Рейтинг: 0 / 0
25.03.2007, 23:21
    #34414344
as361
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка base64 большого размера
Код: plaintext
1.
maXmo
вырезать, а потом – валидировать

Поподробнее, пожалуйста ...
Открыть файл (как простой текстовый файл, не XmlReader'ом), дойти до элемента с base64, перекодировать и проверить?
Т.е. предлагается самостоятельно реализовать некое подобие элементарного парсера?


Код: plaintext
1.
mayton
Используйте поточные средства обработки данных. (XmlTextReader например)

C XmlTextReader такая же беда: пока читаем небольшие текстовые элементы (XmlTextReader.Read()) - все ОК. Как только доходим до здоровенного base64 - вызов Read() отжирает немерянный объем памяти и опа - OutOfMemoryException.
...
Рейтинг: 0 / 0
26.03.2007, 12:07
    #34415089
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка base64 большого размера
не перекодировать, а выкинуть нафиг этот здоровенный base64 кусок, ну да что-то типа простенького парсера.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Обработка base64 большого размера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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