Asp.net 基于XML文档中单个节点的值获取同级值

Asp.net 基于XML文档中单个节点的值获取同级值,asp.net,xml,xslt,xmldocument,selectsinglenode,Asp.net,Xml,Xslt,Xmldocument,Selectsinglenode,我现在想循环这些结果,有2个,但在某些情况下可能有100个。 当我在一个节点中找到countrycode特定值的匹配项时,我想从同一个节点中选择纬度和经度值 e、 g.当我搜索countrycode值“US”时,我想返回值-79.0236和35.1379,即各自的经度和纬度 我试图在ASP.NET中实现这一点,在ASP.NET中,下面的XML被加载到XMLDocument变量objXML中 我知道如何选择countrycode,但不知道如何获取相关的纬度和经度节点 objXML.SelectSi

我现在想循环这些结果,有2个,但在某些情况下可能有100个。 当我在一个节点中找到countrycode特定值的匹配项时,我想从同一个节点中选择纬度和经度值

e、 g.当我搜索countrycode值“US”时,我想返回值-79.0236和35.1379,即各自的经度和纬度

我试图在ASP.NET中实现这一点,在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>

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

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

啊,你说得对,那确实不行。我试过这样做:如果objXML.SelectSingleNode//response/result/doc/str[@name=countrycode][.='+countrycodesi+']/../str[@name=longitude]| str[@name=latitude]不是空的,那么get:Expression必须计算到一个节点集。。你的表达会有什么结果?是否有一种方法可以将纬度和经度值从XMLDocument检索到数组?或通过2个单独的选择,而不是首选。谢谢嗯,我不确定这其中的ASP>NET方面。也许两个seprate选择最简单://response/result/doc/str[@name=countrycode][.='US']/../str[@name=longitude]和//response/result/doc/str[@name=countrycode][.='US']/../str str[@name=latitude]对于兴趣,xpath 2.0中的初始表达式结果是两项,分别是str[@name=longitude]和str name=latitude]的值. 但我认为.NET方面可能会搞错这一点,我对.NET一无所知: