Найти строку из 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. Предполагается объединить текстовое содержимое без следов каких-либо элементов.