2016-08-04 105 views
0

我想从这个xml代码片段获取经度值(-1.914),其中itemfileUID = 2000044在vba中使用xpath查询[通过Set latitudes = oXMLFile.SelectNodes(“// ViewCoordinates [itemFileUID =' 2000044']/ViewCoordinatePair [@name ='latitude']/@ value“)。]任何人都可以帮忙吗?访问属性值xpath

我已搜索和搜索,但没有找到一种方法来找到基于同一节点中的元素内容的属性值。

感谢 汤姆

<schema> 
    <view> 
     <ViewCoordinatesList> 
      <ViewCoordinates> 
       <itemFileUID>2000044</ItemFileUID> 
       <ViewCoordinatePair name="longitude" value="-1.91496237"/> 
       <ViewCoordinatePair name="latitude" value="53.70811065"/> 
       <ViewCoordinatePair name="height" value="136.06"/> 
       <ViewCoordinatePair name="yaw" value="168.083809"/> 
      </ViewCoordinates> 
     </ViewCoordinatesList> 
    </view> 
</schema> 
+0

请注意,您要求'纬度',但在您的示例中提及'-1.914',即'经度'。 – alecxe

+0

@alecxe apologies - 现在更新为经度 – TomH

+0

vba剪接添加上面链接到@alecxe响应 – TomH

回答

2

使用following-sibling axis

//itemFileUID[. = '2000044']/following-sibling::ViewCoordinatePair[@name = 'longitude']/@value 

或者,检查父:

//ViewCoordinates[itemFileUID = '2000044']/ViewCoordinatePair[@name = 'longitude']/@value 
+0

谢谢你 - 我想msgbox这个值,但失败? – TomH

+0

@TomH好吧,如何失败?你在哪里运行?谢谢。 – alecxe

+0

@alexce - vba - 这将返回一个IXMLDOMSelection,我不知道如何访问字符串...这不是我的领域,因为你可以猜测... – TomH

0

这是解决方案:

Set latitude = oXMLFile.SelectNodes("/schema/View/ViewCoordinatesList/ViewCoordinates[ItemFileUID = '2000044']/ViewCoordinatePair[@name = 'longitude']") 
MsgBox latitude(0).getAttribute("value") 

感谢您的帮助