LINUX.ORG.RU

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

 , , ,


0

1

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

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



Последнее исправление: Klymedy (всего исправлений: 2)

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

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

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

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

maloi ★★★★★
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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