Как эффективно заменить символы в документе XML на Java? - PullRequest
3 голосов
/ 19 мая 2010

Я ищу аккуратный и эффективный способ замены символов в документе XML. Существует таблица замены, определенная для почти 12.000 символов UTF-8, большинство из которых должны быть заменены одиночными символами, но некоторые должны быть заменены двумя или даже тремя символами (например, греческая тета должна стать TH). Документы могут быть громоздкими (более 100 МБ). Как это сделать на Java? Мне пришла в голову идея использовать XSLT, но я не уверен, что это лучший вариант.

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

String.replace (..) очень медленный, исходя из моего опыта. Я использовал для анализа 100 МБ KML-файлов с помощью этого API, и производительность просто плохая. Затем я предварительно скомпилировал регулярное выражение, используя Pattern.compile (..), и это работало намного быстрее.

0 голосов
/ 19 мая 2010

Посмотрите на SAX, который позволяет вам видеть каждую отдельную часть XML-документа, когда они проходят. Затем вы можете выполнять действия с текстовыми узлами и выполнять необходимые манипуляции.

Проблема с XSLT состоит в том, что большинству реализаций требуется все дерево ввода в памяти, которое обычно в 10 раз больше размера на диске. Я знаю только коммерческое издание Saxon XSLT трансформатора, который может выполнять потоковую передачу XSLT (но это идеально подходит для ваших нужд).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...