2015-09-20 3 views
0

Я пытаюсь проанализировать данные рынка EVE от EVE Central (https://eve-central.com/home/develop.html), используя xpath 1.0, и я столкнулся с стеной.Нужна помощь в объединении двух Xpaths

Источник данных здесь:

http://api.eve-central.com/api/quicklook?typeid=34

Я пытаюсь получить минимальный заказ на продажу от станции под названием 'Jita. Поэтому я разбил его на два шага, которые работают, но когда они сочетаются, они терпят неудачу.

Xpath, чтобы получить минимальный заказ на продажу отлично работает и возвращает самые низкие цены на заказ:

$x("//quicklook/sell_orders/order[not(preceding-sibling::order/price <= price) and not(following-sibling::order/price < price)] ") 

Getting станция под названием произведения «джита» и возвращает все заявки на продажу от имени станции Jita:

$x("//quicklook/sell_orders/order [contains(./station_name, 'Jita')] ") 

Так что я хочу сделать, это объединить эти два и получить минимальный заказ на продажу со станции под названием «Jita». Логически (на мой взгляд) была бы два сцепить два с «и», чтобы получить этот заказ, как это ...

$x("//quicklook/sell_orders/order [contains(./station_name, \'Jita\') and (not(preceding-sibling::order/price <= price) and not(following-sibling::order/price < price))] ") 

... но это приводит к пустому массиву. Это мой первый удар при использовании xpath, поэтому я, вероятно, пропустил что-то простое. Любая помощь оценивается.

ответ

1

Выражение XPath вам нужно, это //quicklook/sell_orders/order [contains(station_name, 'Jita') and (not(preceding-sibling::order[contains(station_name, 'Jita')]/price <= price) and not(following-sibling::order[contains(station_name, 'Jita')]/price < price))] я думаю, что выбирает элемент

<order id="4246442958"> 
    <region>10000002</region> 
    <station>60003760</station> 
    <station_name>Jita IV - Moon 4 - Caldari Navy Assembly Plant</station_name> 
    <security>0.9</security> 
    <range>65535</range> 
    <price>10.00</price> 
    <vol_remain>1</vol_remain> 
    <min_volume>1</min_volume> 
    <expires>2015-10-20</expires> 
    <reported_time>09-20 07:48:23</reported_time> 
</order> 
+0

Да, что работает! Если бы я мог повышать 10 раз, я бы это сделал. Благодаря! –

Смежные вопросы