如何链接两个不同的元素

时间:2015-07-10 12:56:20

标签: java dom xpath sax

在下面发布的xml文件中,元素“tag”包含速度信息。我面临的问题是,前两个元素“节点”

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

他们的速度信息包含在前面的两个元素“tag”

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

和第二个两个元素“node”:

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

他们的速度信息包含在前面的两个元素“tag”

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

我想要做的是,给定“lat”属性的信息,应该返回速度信息。例如,如果输入是lat =“53.0334062”或lat =“53.0338904” 返回的值应为v =“30”。如果输入是lat =“53.334062”或lat =“53.038904,则返回值应为v =”32“

我怎样才能使用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 个答案:

答案 0 :(得分: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'所需的元素。