Самый быстрый способ заменить данные в Java - PullRequest
0 голосов
/ 08 апреля 2011

Мне нужно написать метод Java, который будет:

  • извлекать HTML из таблицы данных
  • искать в HTML определенный маркер (встроенный в комментарий)
  • замените этот маркер новым HTML

Например, исходный HTML может иметь заголовок страницы, маркер и нижний колонтитул страницы.Я хотел бы получить этот HTML-код и заменить маркер содержимым страницы, например, публикацией в блоге.

Мои главные проблемы - это скорость и функциональность.Поскольку исходный HTML-код и HTML-код для внедрения в исходный HTML-код может быть довольно большим, мне нужен совет.

Я знаю, что могу использовать Strings и использовать String.replace (), но я обеспокоенограничения размера строки и скорость ее выполнения.

Я также думаю об использовании объектов Reader / Writer, но я не знаю, будет ли это быстрее или нет.

Я знаю, что есть объект Java Clob, но я не знаю, можно ли его использовать для моей конкретной ситуации.

Любые идеи / советы будут приветствоваться.

Спасибо,

Тим

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

Потоковая передача данных с помощью Reader, синтаксический анализ на лету, чтобы найти ваши теги, и замена данных в процессе их передачи во время потоковой передачи данных с помощью Writer.

Да, для этого нужно написать парсер.

Не загружайте его в большой буфер, выполняйте поиск и регулярные выражения в буфере, а затем записывайте его. Однократная обработка данных - самая быстрая вещь, которую вы можете сделать.

Если у вас есть данные позже в файле, которые будут заполнены точками выше в файле, то ваш застрял всосать все это.

Наконец, почему вы не используете что-то вроде Apache Velocity?

1 голос
/ 08 апреля 2011

Насколько велик ваш HTML? Гигабайт? Мегабайт? 100k? 10k? Для всех, кроме первого, манипуляции со строками будут очень хорошими. Если этот ответ вас не удовлетворяет, тогда используйте indexOf(), чтобы найти начало и конец маркера, и используйте substring(), чтобы написать части исходной строки до и после.

0 голосов
/ 08 апреля 2011

StringBuilder (не потокобезопасен) и StringBuffer (потокобезопасен) являются двумя основными конструкциями для манипулирования строками. Но если вы читаете свои данные из потока, вероятно, лучше сделать это на лету. (читайте строки, ищите маркер, если найден, пишите контент вместо него)

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