Как часть моего, вероятно, неправильного и громоздкого решения распечатать форму, я взял документ MS-Word, сохраненный как XML, и я пытаюсь сохранить этот XML в виде заводной строки, чтобы я мог ${fillOutTheFormProgrammatically}
Однако, поскольку документы MS-Word настолько велики, насколько они есть, строка состоит из 113100 символов Юникода, а Groovy говорит, что она ограничена 65536. Есть ли способ изменить это или я застрял с разделением строки?
Groovy - нужно сделать печатную форму
Это то, что я пытаюсь сделать.
Обновление: чтобы было ясно, что это слишком длинная строка Groovy. Я думаю, что обычная строка может быть хорошей. Собираюсь изменить стратегию и добавить несколько строк в файл, который я могу легко найти, например %!%variable_name%!%, а затем выполнить .replace(... ммм, я чувствую, что здесь появится новый вопрос...
Ответ 1 · рейтинг 6 · Jörn Horstmann
Вы встраиваете эту строку непосредственно в свой код? Сам jvm имеет ограничение на длину строковых констант, см. Спецификация ВМ, если вас интересуют подробности.
Уродливым обходным путем может быть разделение строки на более мелкие части и объединение их во время выполнения. Лучшим решением было бы сохранить текст во внешнем файле и прочитать содержимое из вашего кода. Вы также можете упаковать этот файл вместе со своим кодом и получить к нему доступ из пути к классам, используя Class#getResourceAsStream.
Ответ 2 · tim_yates
Какое исключение вы получаете? Я не верю, что Groovy String ограничен 65536, так как это в основном строка Java.
Звучит так, как будто вы пытаетесь где-то рекурсировать и достигаете предела стека вызовов в 65536.
При этом, однако, загрузка более 100 тыс. символов в память за один раз кажется излишним.
Почему бы не проанализировать XML с помощью синтаксического анализатора SAX или аналогичного, чтобы получить результаты?
Или почему бы не сохранить только те данные, с которых вам нужно начать, вместо того, чтобы полагаться на сотни тысяч символов xml (которые, как я предполагаю, вам нужна только небольшая часть)