XPath to retrieve text within span
Asked Answered
G

2

7

I am trying to figure out the XPath which will retrieve the 'text Data 3' from the following HTML snippet

  <span class="inner-span">
    Text-data 1
    <br>
    <span>Text Data 2</span> text Data 3
   </span>

So far i have tried the following Xpath which leads me to the span with class 'inner-span'

 /html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]

But dont know what to add more to Xpath which will only give me text 'text Data 3' from above Html snippet. Thanks

Gheber answered 26/4, 2013 at 16:35 Comment(0)
Y
15

For your particular case this XPath query would work:

normalize-space(//span[@class="inner-span"]/text()[last()])

Tried it in this online tester and here's the result:

  1. Your HTML;
  2. My XPath expression;
  3. The expected result "text Data 3".

enter image description here

Yolande answered 26/4, 2013 at 16:50 Comment(2)
I checked your solution on the same link you provided but it gives all text-data from [@class="inner-span"]. I just want text data 3, not all text data 1,text data 2,text data 3.Gheber
I've added a screenshot to show you the result I got and how I got it, hope it helps.Yolande
F
1

You could select /html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]/text()[last()] to get the text node (though with leading and trailing white space) or you can use an XPath returning a string with normalize-space(/html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]/text()[last()]).

Foscalina answered 26/4, 2013 at 16:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.