Получить данные из XML с помощью Livecode

Я просто изучаю Livecode и пробую несколько руководств, чтобы получить данные из формата XML. Я просто путаю.

Вот мой XML-код:

<current><city id="1642911" name="London"><coord lon="106.83" lat="-6.17"/><country>Indonesia</country><sun rise="2014-05-29T22:56:30" set="2014-05-30T10:43:59"/></city><temperature value="302.254" min="302.254" max="302.254" unit="kelvin"/><humidity value="76" unit="%"/><pressure value="971.07" unit="hPa"/><wind><speed value="1.24" name="Calm"/><direction value="20.5019" code="NNE" name="North-northeast"/></wind><clouds value="20" name="few clouds"/><precipitation mode="no"/><weather number="801" value="few clouds" icon="02d"/><lastupdate value="2014-05-30T04:50:44"/></current>

А вот мой код Livecode:

<?lc
#get location
put url ("http://api.openweathermap.org/data/2.5/weather?q=London&mode=xml") into Location

#get lon and lat
put revCreateXMLTree(Location, false, true, false) into locationTree
put revXMLNodeContents(locationTree, "current/city/coord/lat") into latitude
put revXMLNodeContents(locationTree, "current/city/coord/lat") into longitude


#put longitude and latitude information to weather url
put url ("http://api.openweathermap.org/data/2.5/weather?lat=" & latitude & "&lon=" & longitude & "&mode=html") into weather

put weather

Проблема в том, что я не знаю, как вызвать данные в XML (locationTree, "current/city/coord/lat"), код которых похож на этот <coord lon="106.83" lat="-6.17"/>. Не могли бы вы помочь мне? Спасибо.


person Lupita Noyra    schedule 30.05.2014    source источник


Ответы (2)


Я получаю данные о Земле при загрузке

 http://api.openweathermap.org/data/2.5/weather?lat=0&lon=0&mode=html

в браузере.

Может ли быть так, что ваша вторая команда put url не загружает правильные переменные, а затем просто загружает широту и долготу = 0?

Кроме того, убедитесь, что у revXMLNodeContents правильная структура:

put revXMLNodeContents(pTree, "preferences/recentDocuments/" & tRecentDocument) & return after tListOfRecentDocuments

Ваш пример выглядит так, как будто он не знает, какой город загружать в LONG и LAT. Вы видите, что он делает правильные вещи, когда проходите через код?

Обновление: 1. Исправлена ​​опечатка для locationTree при добавлении RevCreateXMLTree.

person Tate83    schedule 30.05.2014
comment
Привет, я только что обновил свой вопрос. Можете ли вы помочь мне, пожалуйста.. :) - person Lupita Noyra; 30.05.2014
comment
Вы знаете этот урок? lessons.runrev.com/s/lessons/m/4071/l/ - person Tate83; 30.05.2014
comment
Да, я знаю. Я извлек из этого уроки. Но нет объяснения для вызова xml-дерева с ‹coord lon=106.83 lat=-6.17/›. Я имею в виду, что описание находится в скобках. - person Lupita Noyra; 30.05.2014
comment
привет, Тейт83. Спасибо за помощь, наконец-то у меня есть решения.. В этих уроках. атрибут вызова с использованием поместить revXMLAttribute(pTree, preferences/introMessage, size) в tIntroMessageSize. благодарю вас.. - person Lupita Noyra; 02.06.2014

Начиная с версии 6.5.0 вы можете использовать более совместимую версию XPath, используя revDataFromXPathQuery(). В вашем скрипте замените revXMLNodeContents... на

put  "current/city/coord[@lat]" into myXPath
revDataFromXPathQuery(locationTree,myXPath) into myLong

Честно говоря, я еще не пробовал это, но в примечаниях к выпуску для 6.5 указано, что это должно работать.

person Mark    schedule 30.05.2014
comment
он показывает {файл /var/www/livecode/nana/weather.lc, строка 12, столбец 6: функция: ошибка в обработчике функции (revDataFromXPathQuery), строка 12, столбец 1: put: ошибка в выражении} - person Lupita Noyra; 02.06.2014
comment
Вы уже приняли другой ответ, поэтому я предполагаю, что мне больше не нужно это изучать. - person Mark; 02.06.2014