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