olegS
(olegS)
16.Март.2014 17:05:52
#1
Проблема следующая: пытаюсь по хpath получить нужный текст
<p style="text-align: center; ">
<strong>Opening hours: </strong>
<br/>
Monday - Thursday 9.00 - 17.00
<br/>
Friday 9.00-16.00
</p>
строю следующий хpath: //*[@id=‘node-1031’]//p[1]
в итоге получаю три строки:
Opening hours:
Monday - Thursday 9.00 - 17.00
Friday 9.00-16.00
задача получить отдельно вторую строку
joemast
(Александр Таранков)
17.Март.2014 04:18:05
#2
Для xpath все эти строки равнозначны - это содержимое ноды. Отдельно вторую строку через xpath получить не удастся, надо парсить с помощью других инструментов. Например, regexp, либо просто подстроку искать - зависит от особенностей содержимого ноды
dmakhno
(Dmytro Makhno)
17.Март.2014 09:46:38
#3
Ваш xml
Гугл подсказал такое:
xpath = //p[1]/text()[preceding-sibling::br and following-sibling::br]
result = Monday - Thursday 9.00 - 17.00
P.S. Но лучше попросите девов, сделать что-то более удобоиспользуемое.
1 лайк
vmaximv
(vmaximv)
17.Март.2014 10:13:01
#4
//p/text()[3] - это правильно с точки зрения xpath, от тока в селениуме такая конструкция работать не будет, т.к. результатом выполнения xpath должна быть нода, а не текст.
svim
(svim)
17.Март.2014 11:13:31
#5
Напишите регулярное выражение для выборки конкретного элемента
reg = reg.replaceAll("<.*?>", "").replaceAll("(?m)^[ \\t]*\\r?\\n", "");
String[] result = reg.split("\n");
Где:
result[0] = “Opening hours:”;
result[1] = “Monday - Thursday 9.00 - 17.00”;
result[2] = “Friday 9.00-16.00”;
В вашем случае System.out.print(result[1]);
Monday - Thursday 9.00 - 17.00
Funker
(Funker)
01.Июль.2014 16:06:38
#7
Очень круто и сильно!!! Видно что человек знает xpath
но боюсь что некоторые браузеры не смогут отработать такой крутой Xpath
1 лайк
Funker
(Funker)
01.Июль.2014 16:09:10
#8
Я бы поступил проще, брал бы весь текс и парсил используя java substring
может прямолинейно но всегда понятно как оно работает