Итак, я искал, но не смог найти ответ.Формат Delphi FormatXMLData вызывает EOutOfMemory
В SOF возникает вопрос о создании большого XML-кода, вызывающего исключение из памяти, но это не мой случай.
Я создаю XML, используя IXMLDocument через привязку данных XML, и он создан просто отлично.
Но при сохранении файла в файл все это в одной строке текста. Путь к передаче XML через FormatXMLData перед сохранением его в файл.
Это отлично работает на небольших файлах, но с EOutOfMemory падает, если XML достаточно велик.
Поэтому я попытался добавить параметр [doNodeAutoIndent], но не работал.
Следующий шаг, я создал TStringList для получения XML, чтобы я мог деактивировать IXMLDocument, а затем попробовать FormatXMLData в TSringList. Я не ожидал многого из этого, но я полагаю, что, возможно, эти два компонента используют другой менеджер памяти (я ошибаюсь, полагая, что IXMLDocument использует диспетчер памяти COM вместо Delphi?), И реальность оказалась настолько близкой к ожиданиям, что и одно и то же исключение был поднят.
Кто-нибудь имеет представление о том, как сохранить сохраненный xml правильно отформованный и сформованный при использовании привязки данных XML, либо с помощью FormatXMLData, либо любым другим вариантом?
Чтение подобных вопросов здесь, в StackOverFlow, я увидел некоторые альтернативы, включая SAX-парсер, чтобы заменить DML на основе документа IXMLDocument, но я считаю, что это отключит преимущество привязки данных XML, не так ли?
Спасибо, Нуну
Насколько велика неформатированный XML-документ? – whosrdaddy
Я тестирую с объемом XML-информации объемом 8.5 МБ, но иногда это может быть даже больше ... – nunopicado