【www.bbyears.com--Google】
背景
我们需要简单的访问XML来解析XML文档.因此,你只要知道在XML文档代码里结果的位置地方,然后解析它就很简单.举个例子,在下面这张图里,我们想要知道有关突尼斯的斯法克斯的天气:
一开始,我们需要指定我们想要知道天气的城市或者州.
代码如下String c = city.getText().toString();
String s = state.getText().toString();
StringBuilder URL = new StringBuilder(BaseURL);
URL.append(c+","+s);
String fullUrl= URL.toString();
try
{
URL website= new URL(fullUrl);
//getting xmlReader to parse data
SAXParserFactory spf= SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader() ;
HandlingXmlStuff doingWork = new HandlingXmlStuff();
xr.setContentHandler(doingWork);
xr.parse(new InputSource(website.openStream()));
String information = doingWork.getInformation();
tv.setText(information);
}
catch(Exception e)
{
tv.setText("error");
}
然后, 我们开始解析XML文档.
代码如下public class HandlingXmlStuff extends DefaultHandler {
XMLDataCollected info = new XMLDataCollected();
public String getInformation()
{
return info.dataToString();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (localName.equals("city"))
{
String city=attributes.getValue("data");
info.setCity(city);
}else if (localName.equals("temp_f")){
String t = attributes.getValue("data");
int temp = Integer.parseInt(t);
info.setTemp(temp);
}
}
}
我们需要指定我们的数据模型和使用的功能.
代码如下 public class XMLDataCollected {int temp= 0;
String city=null ;
public void setCity(String c)
{
city= c ;
}
public void setTemp(int t )
{
temp = t ;
}
public String dataToString()
{
return "In"+city+" the current Temp in F is "+ temp+" degrees";
}
} 。
兴趣点
在这个方案里, 你学会了在Android应用里如何使用XML解析来轻松制作许多功能