2015-07-10 4 views
2

в ниже размещенном XML-файле элемент «тег» содержит информацию о скорости. Проблема я столкнулся в том, что первый два элемента «узел»Как связать между двумя различными элементами

<node id="25779111" lat="53.0334062" lon="8.8461545"/> 
<node id="25779112" lat="53.0338904" lon="8.846314"/> 

их информация скорости заключена в немедленных производствах двух элементов «метка»

<tag k="maxspeed" v="30"/> 
<tag k="maxspeed:zone" v="yes"/> 

и вторые два элемента «узел «:

<node id="25779114" lat="53.334062" lon="8.841545"/> 
<node id="25779117" lat="53.038904" lon="8.84614"/> 

их информация скорости заключена в непосредственном производстве двух элементов„метка“

<tag k="maxspeed" v="32"/> 
<tag k="maxspeed:zone" v="yes"/> 

что я хочу сделать, учитывая информацию о атрибуте «lat», информация о скорости должна быть возвращена. для примера, если входной сигнал равен lat = "53.0334062" или lat = "53.0338904" , возвращаемые значения должны быть v = "30". и если вход либо лат = "53.334062" или лат = "53.038904 возвращаемые значения должны быть v =" 32"

, как может я achive, что с помощью XPath

XML:

<?xml version='1.0' encoding='utf-8' ?> 
<osm> 
<node id="25779111" lat="53.0334062" lon="8.8461545"/> 
<node id="25779112" lat="53.0338904" lon="8.846314"/> 
<tag k="maxspeed" v="30"/> 
<tag k="maxspeed:zone" v="yes"/> 
<node id="25779114" lat="53.334062" lon="8.841545"/> 
<node id="25779117" lat="53.038904" lon="8.84614"/> 
<tag k="maxspeed" v="32"/> 
<tag k="maxspeed:zone" v="yes"/> 
</osm> 

ответ

1

использование этого

//node[@lat="53.0334062"]/following-sibling::tag[1]/@v 

//node[@lat="**yourinput**"]/following-sibling::tag[1]/@v 

объяснение:

node[@lat="53.0334062"] соответствует вашему состоянию. то following-sibling извлекает все дочерние элементы в элементе узла, внутри этих элементов он выберет первый элемент tag, действительно это тот элемент, который вам нужен, чтобы получить атрибут 'V'.

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