xpath                
            Поиск элементов, содержащих конкретный текст
        
        
            
    Поиск…
Найти все элементы с определенным текстом
Представьте следующий XML:
<root>
    <element>hello</element>
    <another>
        hello
    </another>
    <example>Hello, <nested> I am an example </nested>.</example>
</root>
 Следующее выражение XPath:
//*[text() = 'hello']
  вернет <element>hello</element> , но не элемент <another> . Это связано с тем, что элемент <another> содержит пробелы, окружающие hello текст. 
 Чтобы получить как <element> и <another> , можно использовать: 
//*[normalize-space(text()) = 'hello']
 или же
//*[normalize-space() = 'hello']
  который будет обрезать окружающие пробелы перед выполнением сравнения. Здесь мы видим, что спецификатор узла text() является необязательным при использовании normalize-space . 
 Чтобы найти элемент, содержащий конкретный текст, вы можете использовать функцию contains . Следующее выражение вернет элемент <example> : 
//example[contains(text(), 'Hello')]
  Если вы хотите найти текст, охватывающий несколько дочерних / текстовых узлов, то вы можете использовать . вместо text() . . относится ко всему текстовому содержимому элемента и его дочерним элементам. 
//example[. = 'Hello,  I am an example .']
 Чтобы увидеть несколько текстовых узлов, вы можете использовать:
//example//text()
 который вернется:
- "Привет, "
 - «Я - пример»
 - ""
 
 И чтобы более четко увидеть весь текстовый контент элемента, можно использовать string функцию: 
string(//example[1])
 или просто
string(//example)
 Привет, я пример.
 Последнее работает, потому что, если набор узлов передается в такие функции, как string , XPath 1.0 просто смотрит на первый узел (в порядке документа) в этом наборе узлов и игнорирует остальные. 
так:
string(/root/*)
 вернется:
Привет