0
我想遍歷這些結果(現在有2個,但在某些情況下可能高達100個)。 當我在<doc>
節點中找到國家代碼特定值的匹配項時,我想從同一個<doc>
節點中選擇緯度和經度值。根據XML文檔中單個節點的值獲取兄弟值
例如當我搜索國家/地區代碼值「US」時,我想返回值-79.0236
和35.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>
啊,你是對的,那不會工作確實:)。我試過這個: 如果objXML.SelectSingleNode(「// response/result/doc/str [@name =」「countrycode」「] [。='」+ countrycodes(i)+「'] /../( str [@name =「」longitude「」] | str [@name =「」latitude「」])「)IsNot Nothing Then 但是,然後得到:'表達式必須評估爲一個節點集。你表達的結果是什麼?有沒有辦法從XMLDocument檢索經度和緯度值到數組?或另外通過2個單獨的選擇(不優選)。謝謝! – Flo
嗯,我不確定這個ASP> NET方面。也許兩個seprate選擇將是最簡單的://response/result/doc/str[@name="countrycode"][.='US']/../str[@name="longitude「]和/ /響應/結果/ doc/str [@ name =「countrycode」] [。='US'] /../ str [@ name =「latitude」] – smj
感興趣的是,對於初始表達式,xpath 2.0中的結果是兩個項目, str [@ name =「longitude」]和str [@ name =「latitude」]中的每一個的值。但我認爲.NET的方面可能會絆倒這一點(我知道.NET絕對零) – smj