Разбор Java XML: получение внутреннего XML с помощью SAX

Я разбираю XML-файл с помощью SAX, и в какой-то момент мне понадобится внутренний XML элемента. Например, для следующего XML

<a name="abc">
  <b>def</b>
<a>

Мне нужно получить внутренний XML для элемента a, который будет

<b>def<b>

Как это сделать проще всего?

Спасибо.

Иван


person Ivan    schedule 17.02.2011    source источник
comment
Почему бы не использовать xpath? Кодирование SAX несколько болезненно для описанной вами ситуации   -  person vtd-xml-author    schedule 04.03.2011


Ответы (1)


Для этого типа ситуаций я предлагаю использовать 2 обработчика контента. Первый отвечает за поиск соответствующей части документа, а второй - за обработку содержимого. Мой ответ на аналогичный вопрос (см. Ссылку ниже) демонстрирует, как реализовать этот подход:

person bdoughan    schedule 17.02.2011
comment
Отлично, большое спасибо. Еще один вопрос. Как читать чистый XML-код с помощью SAX? Следует ли мне его реконструировать (startElement читает имя элемента, characters читает текст внутри ...) или есть способ лучше? Я хочу, чтобы другой обработчик взял весь XML внутри элемента и вернул его как результат. - person Ivan; 17.02.2011
comment
В конечном итоге это зависит от того, что вы хотите сделать (не могли бы вы предоставить более подробную информацию?). В конечном итоге SAX просто предлагает вам события, и вам нужно соответствующим образом их обрабатывать. StAX - похожий API, с которым вам может быть легко работать, поскольку вы можете контролировать, когда запускаются события (в конечном итоге вы получаете ту же информацию). - person bdoughan; 17.02.2011
comment
Я анализирую документ WSLA. Мне нужно получить информацию от некоторых важных элементов, таких как SLAParameter, ServiceLevelObjective и т. Д. Кроме того, для некоторых важных элементов (например, metric) мне нужно получить как информацию об элементе (например, значения атрибутов), так и весь XML-код элемента. . - person Ivan; 18.02.2011