根据XML文档中的单个节点值获取兄弟值

时间:2013-12-17 19:47:23

标签: asp.net xml xslt xmldocument selectsinglenode

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

e.g。当我搜索国家/地区代码值“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>

1 个答案:

答案 0 :(得分:1)

我不认为你的XPath会起作用,没有带有@name ='US'的str元素。但是使用Xpath 2.0,您可以尝试:

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