Найти строку из xpath, которая содержит тег как дочерние элементы в Java

У меня есть следующая часть кода XML, и я хочу получить строку из определенного тега.

Входной XML:

<subject>
   <title> this title has 5 <sup>+</sup> rating star </title>
</subject>

Из приведенного выше XML я хочу строку с использованием xpath, как

Ожидаемый результат:

"this title has 5+ rating star"

Примечание: я использовал @XmlPath как

@XmlPath('subject/title/text()')
private String title;

Но он возвращает второе значение как результат в переменной заголовка, такой как "звездочка рейтинга"

2 ответа

Именно поэтому люди советуют не использовать text(), если у вас нет особых требований. Функция XPath string(), примененная к узлу, возвращает строковое значение узла, которое для элемента представляет собой конкатенацию всего содержащегося в нем текста, игнорируя разметку - именно то, что вы ищете. Так ты хочешь string(subject/title), Если вы используете Java API, обратите внимание, что теперь результатом будет строка, а не набор узлов.

Возможно, вы могли бы попробовать string(subject/title), У меня пока нет доступа к Java, но строковые операции достаточно распространены в XPath. Предполагается объединить текстовое содержимое без следов каких-либо элементов.

Другие вопросы по тегам