2013-10-03 54 views
0

我想從第三方來源獲取節點的值。部分Xmlstructure有一個節點,其名稱在point和framedPoint之間變化。我如何獲得緯度值?這裏是xml的一部分,它們對xml有很多級別,所以都顯示了相關的區域。xpath篩選器,而父節點更改名稱

此節點稱爲點

<tpegpointLocation xsi:type="TPEGSimplePoint"> 
    <point xsi:type="TPEGJunction"> 
     <pointCoordinates> 
      <latitude>54.894825</latitude> 
     </pointCoordinates> 
    </point> 
</tpegpointLocation> 

這裏framedPoint

<tpegpointLocation xsi:type="TPEGSimplePoint"> 
    <framedPoint xsi:type="TPEGJunction"> 
      <pointCoordinates> 
        <latitude>54.894825</latitude> 
      </pointCoordinates> 
    </framedPoint> 
</tpegpointLocation> 

感謝,任何幫助

回答

0

你可以在你的XPath使用星號作爲通配符

/tpegpointLocation/*/pointCoordinates/latitude 
+0

沒有意識到在*節點處,點頭呼叫「to」存在並且具有相同的結構。它似乎不可能使用混合通配符與ie * oint? – user2247671

+0

不是這樣;但你可以使用'* [ends-with(name(),'oint')]' –

+0

應該提到xml有一個命名空間,所以我的xpath每個節點看起來都像/ x:latitude,.net現在出錯並且詢問對於XsltContext是否需要? – user2247671

0

f ollowing的XPath會做的工作:

//tpegpointLocation//pointCoordinates/latitude 

這意味着:

  • //tpegpointLocation搜索XML文件中的所有<tpegpointLocation>元素
  • 第二//pointCoordinates意味着搜索以下<tpegpointLocation>所有<pointCoordinates>元素無論哪個要素(一個或多個或不同的名字
  • /latitude表示獲得<latitude> ele低於<pointCoordinates>

請注意,使用//掃描整個XML文件。如果你能夠改變//tpegpointLocation它會更好,更快。