Я пытаюсь получить информацию о курсе, чтобы показать название курса, описание и местоположение, у которых есть текст, который содержит марш и игнорирует курсы, которые, например, в апреле.PHP Xpath Invalid Expression
Вот мой XML:
<div class="main">
<div class="workshoplist-main">
<div class="toggler pointer">
<i class="icon-chevron-down"></i>
<span id="rpt_0_lblSectionHeader_0">Wednesday, March 18, 2015 (10:00 AM - 11:00 AM)</span>
</div>
<div class="accordion-element">
<div class="element">
<p>Course title: Math 100</p>
<p>Description: Math</p>
<p>Location: SSD1</p>
</div>
</div>
<div class="toggler pointer">
<i class="icon-chevron-down"></i>
<span id="rpt_0_lblSectionHeader_0a">Wednesday, April 18, 2015 (10:00 AM - 11:00 AM)</span>
</div>
<div class="accordion-element">
<div class="element">
<p>Course title: English 100</p>
<p>Description: English</p>
<p>Location: BBD1</p>
</div>
</div>
<div class="toggler pointer">
<i class="icon-chevron-down"></i>
<span id="rpt_0_lblSectionHeader_0b">Thursday, March 19, 2015 (10:00 AM - 11:00 AM)</span>
</div>
<div class="accordion-element">
<div class="element">
<p>Course title: History 100</p>
<p>Description: History</p>
<p>Location: ADD</p>
</div>
</div>
</div>
<div class="workshoplist-main">
<div class="toggler pointer">
<i class="icon-chevron-down"></i>
<span id="rpt_0_lblSectionHeader_1">Thursday, April 16, 2015 (10:00 AM - 11:00 AM)</span>
</div>
<div class="accordion-element">
<div class="element">
<p>Course title: Math 105</p>
<p>Description: Math</p>
<p>Location: SSD2</p>
</div>
</div>
</div>
<div class="workshoplist-main">
<div class="toggler pointer">
<i class="icon-chevron-down"></i>
<span id="rpt_0_lblSectionHeader_2">Friday, March 19, 2015 (10:00 AM - 11:00 AM)</span>
</div>
<div class="accordion-element">
<div class="element">
<p>Course title: Chemistry 100</p>
<p>Description: Chemistry</p>
<p>Location: ADD</p>
</div>
</div>
</div>
</div>
Вот мой XPATH, что я написал в PHP:
$details = $node->xpath("//div[@class='toggler pointer']/span[contains(@id,'lblSectionHeader')][contains(text(), 'March')]/following-sibling::/*");
Результат Я хотел бы видеть это:
Wednesday, March 18, 2015 (10:00 AM - 11:00 AM)
Course title: Math 100
Description: Math
Location: SSD1
Thursday, March 19, 2015 (10:00 AM - 11:00 AM)
Course title: History 100
Description: History
Location: ADD
Do не показывать все курсы английского языка
Проблема в том, что я не могу получить
<div class="element">
для извлечения значения, конечно, описание, расположение
Поскольку вы используете XPath в PHP, я думаю, мы можем предположить, что это XPath 1.0 - XPath 2.0 недоступен. Исправьте меня, если это предположение неверно. – LarsH
next-sibling :: выберет следующий родной узел контекстного узла. Поскольку я вижу, что ваш контекстный узел является span в этой точке, вы должны вернуться и поместить ../ перед следующим браком. Попробуйте это и посмотрите, работает ли оно. – Mark