Можно ли использовать Apache Digester для фильтрации динамических листовых тегов xml? - PullRequest
0 голосов
/ 15 мая 2011

Раньше я использовал Apache Digester и любил поиск по тегам XML на основе веток. Указание тега как ч \ а \ Ь \ очень интуитивно понятен.

Теперь я хочу сделать проект фильтрации XML, но Apache Digester не похоже, что он будет работать, просто потому, что нет способа добраться до базовых тегов XML. Как часто задаваемые вопросы говорят:

Как получить XML-код, вложенный в тег в виде литеральной строки?

Часто задают вопрос, каким образом некоторые XML (особенно XHTML), вложенные в документ, могут быть извлечены в виде строки, например, чтобы извлечь содержимое тега "body" ниже в виде строки:

... некоторый XML-код ...

Если вы можете изменить вышеприведенное, чтобы обернуть желаемый текст в раздел CDATA, все будет просто; Digester просто обработает этот блок CDATA как одну строку:

... некоторый XML-код ...

Если это невозможно, вам нужно использовать NodeCreateRule для создания узла DOM, представляющего тег body и его потомков, а затем сериализовать этот узел DOM обратно в текст.

Помните, что Digester - это просто слой поверх стандартного синтаксического анализатора XML, и стандартные синтаксические анализаторы XML не имеют возможности просто прекратить анализ ввода для определенного элемента - если только он не знает, что содержимое этого элемента является блоком символов ( CDATA).

Если было что-то, что использует ту же систему шаблонов, которую я могу использовать для фильтрации XML? Моя идея состоит в том, чтобы использовать шаблоны, заданные пользователем, заносить их в черный список и копировать все остальное.

Или, может быть, есть способ найти местоположение совпадения в Apache Digester (местоположение в xml, а не только отображаемый текст). Этого было бы достаточно для меня, чтобы скопировать другой текст, сохранив его копию и пропуская совпадения.

Edit: с тех пор я узнал, что XPath выглядит почти нормально для этого, но все приложения, которые я нашел, были для выбора чего-то, а не удаления. У вас есть пример для этого?

1 Ответ

0 голосов
/ 15 мая 2011

Не берите в голову, удалось сделать это с XPath.

...