这个答案是基于
this question
这样你就可以得到
value
温度的变化。
我添加了更多步骤,以便您可以使用调试器检查中间值。
来自同一个
attrs
你可以得到测量温度的单位。
请注意,方法名有误,因为它不返回任何内容。唯一的用途是显示访问温度值的代码。
进口:
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
方法:
public void getTemperature() throws SAXException, IOException, ParserConfigurationException {
String xml = "<current>\r\n" +
"<city id=\"2643743\" name=\"London\">\r\n" +
"<coord lon=\"-0.13\" lat=\"51.51\"/>\r\n" +
"<country>GB</country>\r\n" +
"<sun rise=\"2017-01-30T07:40:36\" set=\"2017-01-30T16:47:56\"/>\r\n" +
"</city>\r\n" +
"<temperature value=\"280.15\" min=\"278.15\" max=\"281.15\" unit=\"kelvin\"/>\r\n" +
"<humidity value=\"81\" unit=\"%\"/>\r\n" +
"<pressure value=\"1012\" unit=\"hPa\"/>\r\n" +
"<wind>\r\n" +
"<speed value=\"4.6\" name=\"Gentle Breeze\"/>\r\n" +
"<gusts/>\r\n" +
"<direction value=\"90\" code=\"E\" name=\"East\"/>\r\n" +
"</wind>\r\n" +
"<clouds value=\"90\" name=\"overcast clouds\"/>\r\n" +
"<visibility value=\"10000\"/>\r\n" +
"<precipitation mode=\"no\"/>\r\n" +
"<weather number=\"701\" value=\"mist\" icon=\"50d\"/>\r\n" +
"<lastupdate value=\"2017-01-30T15:50:00\"/>\r\n" +
"</current>";
Document doc = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new InputSource (new StringReader(xml)));
NodeList errNodes=doc.getElementsByTagName("current");
if(errNodes.getLength()>0){
Element err=(Element) errNodes.item(0);
NodeList temps = err.getElementsByTagName("temperature");
Node temp = temps.item(0);
NamedNodeMap attrs = temp.getAttributes();
Node val = attrs.getNamedItem("value");
String strValue = val.getNodeValue();
System.out.println(strValue);
}
}