|
|
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, ALL. с xml раньше не работал. А тут понадобилось создать xml-файл. Нашел в интернете рабочий способ: Код: pascal 1. 2. 3. 4. 5. 6. end; with xml do begin with AddChild('primer') do ... [/SRC] Но все работает при небольшом объеме данных выгрузки. А при большом выбрасывает ошибку, что не хватает памяти. Типа 32-разрядное приложение не может занимать память больше 2 гигов. Слыхал, что есть другие способы создания xml-файлов, без хранения всего дерева. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 13:30:42 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
igor_prg, Google, "direct XML writer". Например, OmniXML пишет что в нём есть, но я лично им не пользовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 13:54:58 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
самый быстрый и простой способ записи конкретного XML в файл - это просто запись текста в файл XML это обычный текст. Ничего не мешает его писать как обычный текст. TStreamWriter очень удобно подходит например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 13:58:07 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
2 alekcvp Спасибо. 2 krapotkin Я так в самом начале и сделал. Но если в тексте будут какие-то спецсимволы (типа "&"), то xml файл не пройдет валидность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 14:06:13 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
http://wiki.freepascal.org/XML_Tutorial/ru модули DOM и XMLWrite из freepascal могут быть использованы в delphi? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 14:43:13 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
Я давно агитирую местных, давайте напишем парсер и писатель XML на платформе CachedTexts. Аналогов по скорости не будет. Но желающих помогать нет, а без помощи я ещё фиг знает когда этим займусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 15:29:23 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
igor_prgбудут какие-то спецсимволы ну так мы же сами пишем текст. сами и спецсимволы заменим их всего-то десяток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 15:46:09 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
мой вариант преобразования текстовой строки в XML-строку с учетом спецсимволов: Код: pascal 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. и простейший пример прямой записи в XML-файл: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 19:58:42 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
вот и глюк форума, он не правильно отобразил часть исходников)))) имелось ввиду следующее: case ASource[I] of '<': Result := Result + '<'; '>': Result := Result + '>'; '"': Result := Result + '"'; '&': Result := Result + '&'; else // просто добавляем Result := Result + ASource [I]; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 20:01:02 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
емое, попробую еще раз: case ASource[I] of '<': Result := Result + '& l t ; ' ; '>': Result := Result + '& g t ; ' ; '"': Result := Result + '& q u o t ; ' ; '&': Result := Result + '& a m p ; ' ; else // просто добавляем Result := Result + ASource[I]; end; убрать пробелы, где выделено жирным шрифтом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 20:02:46 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
asutp2 и простейший пример прямой записи в XML-файл: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. а ты вообще топикстартера читал ? igor_prg А при большом выбрасывает ошибку, что не хватает памяти. Типа 32-разрядное приложение не может занимать память больше 2 гигов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 22:22:02 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
DimaBr конечно я читал топик ТС и прекрасно понимаю суть проблемы, т.к. сам с ней сталкивался на заре начала работы с XML-документами. А суть проста - TXmlDocument очень прожорлив к памяти и из за этого видимо очень тормознут. Записывая тот же самый документ через (например!) TStringList, мы используем памяти как минимум в 10 раз меньше. И чем разветвленнее документ (т.е. чем больше вложенности)), тем он больше жрет памяти при работе через TXmlDocument. Ну и никто не запрещает записывать результирующий файл кусками, а не собирать его в памяти. ТС направления для работы выданы, я считаю)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 23:00:37 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
Знаю одну контору которая тоже очень любит xml как обычные текстовые файлы создавать. Проблема в том что потом эти текстовые файлы периодически не проходят проверку по xsd схеме :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 09:31:06 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
Мне понравился модуль (бесплатный) SimpleXML. Правда на большие объемы его не проверял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 09:39:17 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
любой компонент или библиотека нужны лишь для разбора структурированного хранения XML здесь эта задача вообще не стоит зачем тогда сверхдвижения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 10:33:56 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
эндиЗнаю одну контору которая тоже очень любит xml как обычные текстовые файлы создавать. Проблема в том что потом эти текстовые файлы периодически не проходят проверку по xsd схеме :)) Можно подумать, что при создании через DOM файлы будут гарантировано проходить проверку и валидация выполняется в момент создания xml-файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 10:36:03 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
igor_prg, Недавно обсуждали тут быструю запись XML Мой вариант оказался в 15 быстрее кода автора. И наверное раз в 50 быстрее решений, которые тебе здесь предлагают Можешь попытаться разобраться 20576292 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 13:10:46 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU твой код в 50 раз быстрее, чем простое заполнение tstringlist и запись в файл?))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 13:44:03 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
asutp2, да, это правда. Тут многие тестировали его код - так hdd просто взрывались: скорость записи в десятки раз превышает предельную скорость, на которую рассчитано оборудование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 14:03:46 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
чччД я скорость данной библиотеки не проверял, но исходники внимательно посмотрел. слабые места библиотеки: - использование приведений pointer() - кроссплатформенность не в почете? - использование label - сразу вспомнились времени turbo pascal 7.0 и delphi 1.0 для справедливости я соглашусь, что операции с текстовыми строками дорогие в плане тиков, поэтому работа с фиксированным буфером в памяти с периодическим скидыванием очередной сформированной части буфера в файл (используя кэширование) будет самым быстрым. проверим :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 14:17:31 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
writeln + settextbuf и не надо никакого стороннего кода. Быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 14:42:37 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUЯ давно агитирую местных, давайте напишем парсер и писатель XML на платформе CachedTextsПоделиться своим парсером? Писал многопоточный читатель/писатель. Читатель поддерживает кучу кодировок, писатель пишет только в UTF-8. Не поддерживается запись комментариев и не поддерживаются пространства имен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 15:00:59 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Выложи в эту ветку, пожалуйста: http://www.sql.ru/forum/1204260/oficialnyy-reliz-biblioteki-cachedtexts Вообще наиболее эффективный формат такой разработки я представляю себе как "в четыре руки". То есть один запаривается над архитектурой и скоростью, второй определяет (уточняет) правила и проверяет корректность выполнения кода, может быть через юнит тесты. Подумай, может быть потянешь такой формат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 18:43:43 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
asutp2 SOFT FOR YOU твой код в 50 раз быстрее, чем простое заполнение tstringlist и запись в файл?))) Разумеется. Вот здесь был тест на запись 100Мб: http://www.sql.ru/forum/1178076-a/oficialnyy-reliz-cachedbuffers На 1Гб разница будет колоссальная, и то, TStringList сработает только на x64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 18:47:15 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39482148&tid=2042063]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 516ms |

| 0 / 0 |
