2013-12-17 59 views
0

我想遍歷這些結果(現在有2個,但在某些情況下可能高達100個)。 當我在<doc>節點中找到國家代碼特定值的匹配項時,我想從同一個<doc>節點中選擇緯度和經度值。根據XML文檔中單個節點的值獲取兄弟值

例如當我搜索國家/地區代碼值「US」時,我想返回值-79.023635.1379,各自的經度和緯度。

我想在ASP.NET中執行下面的XML被加載到XMLDocument變量objXML

我知道如何選擇countrycode,但不知道如何獲取相關的緯度和經度節點。

objXML.SelectSingleNode("//response/result/doc/str[@name='US']").InnerText 

<response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">3</int> 
     <lst name="params"> 
      <str name="facet">false</str> 
      <str name="fl">id,geonameid,title,latitude,longitude,countrycode</str> 
      <str name="indent">off</str> 
      <str name="start">0</str> 
      <str name="q">title_search:*nijmegen*</str> 
      <str name="rows">10</str> 
      <str name="defType">lucene</str> 
     </lst> 
    </lst> 
    <result name="response" numFound="2" start="0"> 
     <doc> 
      <str name="countrycode">US</str> 
      <str name="title">Nijmegen</str> 
      <str name="longitude">-79.0236</str> 
      <str name="geonameid">4482161.0</str> 
      <str name="latitude">35.1379</str> 
     </doc> 
     <doc> 
      <str name="countrycode">NL</str> 
      <str name="title">nijmegen</str> 
      <str name="longitude">5.85278</str> 
      <str name="geonameid">2750053.0</str> 
      <str name="latitude">51.8425</str> 
     </doc> 
    </result> 
</response> 

回答

1

我不認爲你的XPath可以工作,沒有帶@name ='US'的str元素。但與Xpath 2.0,你可以嘗試:

//response/result/doc/str[@name="countrycode"][.='US']/../(str[@name="longitude"] | str[@name="latitude"]) 
+0

啊,你是對的,那不會工作確實:)。我試過這個: 如果objXML.SelectSingleNode(「// response/result/doc/str [@name =」「countrycode」「] [。='」+ countrycodes(i)+「'] /../( str [@name =「」longitude「」] | str [@name =「」latitude「」])「)IsNot Nothing Then 但是,然後得到:'表達式必須評估爲一個節點集。你表達的結果是什麼?有沒有辦法從XMLDocument檢索經度和緯度值到數組?或另外通過2個單獨的選擇(不優選)。謝謝! – Flo

+1

嗯,我不確定這個ASP> NET方面。也許兩個seprate選擇將是最簡單的://response/result/doc/str[@name="countrycode"][.='US']/../str[@name="longitude「]和/ /響應/結果/ doc/str [@ name =「countrycode」] [。='US'] /../ str [@ name =「latitude」] – smj

+0

感興趣的是,對於初始表達式,xpath 2.0中的結果是兩個項目, str [@ name =「longitude」]和str [@ name =「latitude」]中的每一個的值。但我認爲.NET的方面可能會絆倒這一點(我知道.NET絕對零) – smj