0

我想遍历这些结果(现在有 2 个,但在某些情况下可能多达 100 个)。当我在节点中找到与国家代码的特定值匹配时<doc>,我想从同一<doc>节点中选择纬度和经度值。

例如,当我搜索国家代码值“US”时,我想返回值-79.023635.1379,分别是经度和纬度。

我正在尝试在 ASP.NET 中执行此操作,其中将下面的 XML 加载到 XMLDocument 变量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

我认为您的 XPath 不会起作用,没有带有 @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 回答