0

これらの結果をループしたいと思います (現在は 2 つですが、場合によっては最大 100 になる可能性があります)。ノード内の国コードの特定の値に一致するものを見つけたら、同じノード<doc>から緯度と経度の値を選択したいと考えています。<doc>

たとえば、countrycode 値 'US' を検索している場合、それぞれの経度と緯度の値-79.0236とを返したいとします。35.1379

以下の XML が XMLDocument 変数に読み込まれる ASP.NET で実行しようとしていますobjXML

国コードを選択する方法は知っていますが、関連する緯度と経度のノードを取得する方法はわかりません。

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>
4

1 に答える 1

1

@name ='US' の str 要素はありません。ただし、Xpath 2.0 を使用すると、次のことを試すことができます。

//response/result/doc/str[@name="countrycode"][.='US']/../(str[@name="longitude"] | str[@name="latitude"])
于 2013-12-17T19:56:17.093 に答える