通过Livecode从XML获取数据

时间:2014-05-30 07:20:18

标签: 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"/>。你可以帮帮我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

我在加载

时收到地球数据
 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.在放置RevCreateXMLTree locationTree 时纠正错字

答案 1 :(得分:0)

从6.5.0开始,您可以使用revDataFromXPathQuery()使用更兼容的XPath版本。在您的脚本中将revXMLNodeContents...替换为

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

坦率地说,我还没有尝试过这个,但6.5的发行说明表明这应该有用。