Java - 来自父项子的attributevalue

时间:2016-09-08 21:22:55

标签: java xml parsing

我目前正在使用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,提前致谢!如果您需要任何解释,请告诉我,我会尝试。

1 个答案:

答案 0 :(得分:0)

出于您的目的,我建议您使用XPATH Api,一种查询XML的特定语言。该计划将是这样的:

sudo -E