2016-08-04 8 views
0

Я пытаюсь получить доступ к значению долготы (-1.914) из этого фрагмента xml, где itemfileUID = 2000044, используя запрос xpath в vba [через Set latitudes = oXMLFile.SelectNodes ("// ViewCoordinates [itemFileUID = ' 2000044 ']/ViewCoordinatePair [@name =' широта ']/@ значение.) Может ли кто-нибудь помочь?Значение атрибута доступа 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 извинения - обновлено теперь до longitude – TomH

+0

vba snipped добавлено выше связано с ответом @alecxe – TomH

ответ

2

Используйте following-sibling axis:

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

Или, проверка родителя:

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

спасибо за это - я пытаюсь передать это значение, но не удается? – 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") 

Спасибо за помощь людей

Смежные вопросы