我正在使用Google天气api服务。我正在使用DOM。 我很难获得元素值。
这是xml响应的一个例子:
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<forecast_information>
<city data="New York, NY"/>
<postal_code data="new york,ny"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2010-05-20"/>
<current_date_time data="2010-05-20 07:44:43 +0000"/>
<unit_system data="US"/>
</forecast_information>
<current_conditions>
<condition data="Cloudy"/>
<temp_f data="59"/>
<temp_c data="15"/>
<humidity data="Humidity: 80%"/>
<icon data="/ig/images/weather/cloudy.gif"/>
<wind_condition data="Wind: N at 0 mph"/>
</current_conditions>
<forecast_conditions>
<day_of_week data="Thu"/>
<low data="61"/>
<high data="79"/>
<icon data="/ig/images/weather/sunny.gif"/>
<condition data="Sunny"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Fri"/>
<low data="60"/>
<high data="83"/>
<icon data="/ig/images/weather/partly_cloudy.gif"/>
<condition data="Partly Cloudy"/>
</forecast_conditions>
</weather>
现在假设我要检索标签
下的条件数据的值(在这个例子中,我试图获得值=“多云”
这就是我的所作所为:
void buildForecasts(String raw) throws Exception
{
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(raw)));
NodeList temps = doc.getElementsByTagName("current_conditions");
for (int i = 0; i < temps.getLength(); i++)
{
Element temp = (Element) temps.item(i);
String temp1 =temp.getAttribute("condition")
}
}
它并不适合我。谁有任何想法?
感谢, 射线。
答案 0 :(得分:3)
temps
列表包含名称为“current_conditions”的元素(即XML中的节点<current_conditions>
)。您需要获取名为“condition”的子元素(即XML中的节点<condition data="Cloudy"/>
),然后获取其data
属性。
for (int i = 0; i < temps.getLength(); i++)
{
Element currentConditionsElement = (Element) temps.item(i);
NodeList conditionList = currentConditionsElement.getElementsByTagName("condition");
Element conditionElement = (Element) conditionList.item(0);
String dataAttribute = conditionElement.getAttribute("data");
}
答案 1 :(得分:1)
如果您使用的是API级别8(Android 2.2),那么您可以使用XPath简化操作。