LINUX.ORG.RU

Редактирование всех полей в org.wc3.dom.Document

 , , ,


0

1

Имеется документ org.wc3.dom.Document. Нужно просмотреть текстовые ноды и значения аттрибутов и заменить невалидные xml символы(с 00 по 32, исключая 9,10,13). Есть жесткие требования к скорости работы.

Может кто-то сталкивался, как можно эффективно сделать эту проверку и замену? Итерировать по всем элементам или трансформировать документ в строку, обработать ее, а потом распарсить обратно в документ? Или есть еще какие способы?

Может, лучше SAX, если требования жёсткие?.. Сделать-то не особо много надо

Adonai ★★★ ()
Последнее исправление: Adonai (всего исправлений: 1)
Ответ на: комментарий от Adonai

Ну вообще когда уже есть готовый DOM, то работать с ним достаточно быстро. Обычно проблемы DOM в процессе парсинга, причем связаны они больше с выделением гигабайтов памяти под мелкие объекты.

maloi ★★★★★ ()
Ответ на: комментарий от by_zero

В скорости и использовании памяти. Минусы - в несколько более сложном программировании парсера.

maloi ★★★★★ ()

Нужно просмотреть текстовые ноды и значения аттрибутов и заменить невалидные xml символы

А откуда они там взялись?

maloi ★★★★★ ()
Ответ на: комментарий от maloi

т.е. преобразование DOM в строку - это плохая идея с точки зрения производительности, да?

by_zero ()
Ответ на: комментарий от maloi

Ну мне нужно просто итерировать по всем тектовым нодам, никаких селекторов не нужно

by_zero ()
Ответ на: комментарий от maloi

В базу пишут нехорошие люди кривые символы. Базу фиксить нельзя

by_zero ()
Ответ на: комментарий от by_zero

dom->строка->dom - плохая идея, уж лучше просто dom взять и по нему пройтись.

maloi ★★★★★ ()
Ответ на: комментарий от by_zero

в базе же у тебя не dom хранится, а blob/clob наверно?

maloi ★★★★★ ()
Ответ на: комментарий от maloi

Я выхлоп от вебсервиса обрабатываю. А не знаешь насчет org.w3c.dom.traversal, этот пакедж как-раз позволяет выбрать все тектовые ноды и аттрибуты, он быстро работать будет или не в курсе?

by_zero ()
Ответ на: комментарий от maloi

Я вот всё думаю, а разве при парсинге в DOM оно не упадёт на невалидном символе?.. парсер-то полагает всю структуру корректной

Adonai ★★★ ()
Ответ на: комментарий от by_zero

а ты попробовать не пробовал? (ага, именно так)

anonymous ()
Ответ на: комментарий от anonymous

а вдруг кто-то уже пробовал, а я буду делать ненужную работу?

by_zero ()
Ответ на: комментарий от Adonai

При парсинге может и упадет, но у меня xml создается из джава классов, падает уже при передаче респонза клиенту.

by_zero ()
Ответ на: комментарий от Adonai

Ну я это и пытался выяснить наводящими вопросами

maloi ★★★★★ ()
Ответ на: комментарий от by_zero

Я выхлоп от вебсервиса обрабатываю

Так из базы или веб сервиса?

А не знаешь насчет org.w3c.dom.traversal, этот пакедж как-раз позволяет выбрать все тектовые ноды и аттрибуты, он быстро работать будет или не в курсе?

Не знаю, думаю не медленнее чем вручную написанная рекурсии.

maloi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.