求解释这一段代码。并指出哪些是输入变量。哪些是输出变量。并告诉我有什么功能。求android达人指教。谢

2025-03-19 23:56:15
推荐回答(2个)
回答1:

...这不是SAX解析XML么,楼主这个解析完的数据似乎是放在了News这个类的对象里存成它的属性.整体楼主贴出的这个方法,是把解析得到的装载数据的对象存入集合里,再把这个集合返回.这些解析步骤基本是固定的,主要是看myhandler里你怎么返回数据的.
url=new URL(path);
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
XMLReader xr=sp.getXMLReader();
NewsHandler myHandler=new NewsHandler();
xr.setContentHandler(myHandler);
InputStream is=url.openStream();
byte[] encoding=new byte[2000];
is.read(encoding);
is.close();
BytesEncodingDetect be=new BytesEncodingDetect();
int ii=be.detectEncoding(encoding);
String aa=BytesEncodingDetect.nicename[ii];
InputStreamReader i =new InputStreamReader(url.openStream(),aa);
xr.parse(new InputSource(i));
这全是SAX解析固定步骤,楼主只要注意那个2000改变大小就可以了.
下面这两句 data=myHandler.getParsedData();
title=myHandler.getRssTitle();
都是myhandler的方法,这里没贴出来,估计第一个是把myhandler里的得到数据的list赋值给这个list.第二个是得到标题?或者标签?

回答2:

这是模拟RSS订阅新闻的一段代码

public List getRss(String path)
{//解析数据源的函数 path:数据源的路径
List data=new ArrayList(); //新建一个list装载News信息,供返回
URL url = null;
try
{
url=new URL(path);
SAXParserFactory spf=SAXParserFactory.newInstance(); //产生一个SAX工厂类,生成SAX
SAXParser sp=spf.newSAXParser(); //生成SAX
XMLReader xr=sp.getXMLReader(); //SAX获取XML解析类
NewsHandler myHandler=new NewsHandler(); //新闻句柄类,自己定义的,实现ContentHandler这个抽象类(所有从URLConnection读取并返回一个Object的类的超类),并有自己的 一些方法获取新闻信息。
xr.setContentHandler(myHandler);
InputStream is=url.openStream(); //开始解析数据
byte[] encoding=new byte[2000];
is.read(encoding);
is.close();
BytesEncodingDetect be=new BytesEncodingDetect();
int ii=be.detectEncoding(encoding);
String aa=BytesEncodingDetect.nicename[ii];
InputStreamReader i =new InputStreamReader(url.openStream(),aa);
xr.parse(new InputSource(i));
data=myHandler.getParsedData(); //获取数据
title=myHandler.getRssTitle(); //获取标题,这里title没声明,应该要写到News类的成员变量里比较合理
}
catch (Exception e)
{

}
return data;
}

实在看不懂可以一个个函数去百度下。