Я думаю, вы неправильно поняли функцию text
в XPath. В отличие от функции DOM, она не возвращает объединенную строку всех текстовых подузлов. Вместо этого он выбирает отдельные текстовые узлы.
В вашем примере //text()
выберет три текстовых узла:
[" ", " Status :", " REGISTERED "]
Что вам может понадобиться, это выражение XPath:
//b/a[contains(text(),"Status")]/../following-sibling::text()[1]
По сути, он находит элемент a
, имеющий правильный текстовый узел, затем подходит к родительскому элементу (b
) и затем получает свой родственный текстовый узел.