我目前正在使用Java中的小天气API(来自YR.NO)。
API采用XML格式,如下所示:
注意:有几个"框"在相同的API中,只是在不同的时间
Whole XML shown
<time datatype="forecast" from="2016-09-08T21:00:00Z" to="2016-09-08T21:00:00Z">
<location altitude="47" latitude="59.3293235" longitude="18.0685808">
<temperature id="TTT" unit="celsius" value="12.0"/>
<windDirection id="dd" deg="121.8" name="SE"/>
<windSpeed id="ff" mps="2.2" beaufort="2" name="Svak vind"/>
<windGust id="ff_gust" mps="3.7"/>
<humidity value="80.5" unit="percent"/>
<pressure id="pr" unit="hPa" value="1016.0"/>
<cloudiness id="NN" percent="51.6"/>
<fog id="FOG" percent="-0.0"/>
<lowClouds id="LOW" percent="51.2"/>
<mediumClouds id="MEDIUM" percent="0.0"/>
<highClouds id="HIGH" percent="0.8"/>
<dewpointTemperature id="TD" unit="celsius" value="8.8"/>
</location>
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException
{
for (int i = 0; i < attributes.getLength(); i++)
{
String attributeName = attributes.getLocalName(i);
String attributeValue = attributes.getValue(i);
System.out.println(attributes.getLocalName(i) + " : " + attributes.getValue(i));
//if(attributeValue.toLowerCase().indexOf(timeCheck.toLowerCase()) != -1)
// {
// System.out.println("Temperature: " + attributes.getValue(i));
// }
}
使用这个^我可以轻松地显示所有名称及其值,但我无法确定如何控制它。 我现在拥有的是一个保存用户输入的字符串,如:
String timeCheck = "T"+timeUserInput;
(如果我输入15则timeCheck变为&#34; T15&#34;)
然后我检查一些值是否获得此输入,例如&#34; T21&#34;在for-loop里面有这个:
if(attributeValue.toLowerCase().indexOf(timeCheck.toLowerCase()) != -1)
然后如果真的我想要打印温度值,在这种情况下是#34; 12.0&#34;但我似乎无法找到一种简单的方法。我可以打印所有温度值,但我只想要正确时间的温度值。
我最好解释我的问题,最近开始使用Java,提前致谢!如果您需要任何解释,请告诉我,我会尝试。
答案 0 :(得分:0)
出于您的目的,我建议您使用XPATH Api,一种查询XML的特定语言。该计划将是这样的:
sudo -E