一、首先得到服务器端的xml文件

String path = "http://10.0.2.2:9999/XMLServer/video.xml";URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection)url.openConnection();conn.setReadTimeout(8 * 1000);conn.setRequestMethod("GET");InputStream is = conn.getInputStream();byte[] data = StreamTools.readInput(is);

StreamTools代码:

public class StreamTools {public static byte[] readInput(InputStream is) throws Exception {byte[] buffer = new byte[is.available()];int len = 0;ByteArrayOutputStream bos = new ByteArrayOutputStream();while((len = is.read(buffer)) != -1) {bos.write(buffer,0,len);}bos.close();return bos.toByteArray();}}

二、将得到的xml文件进行解析

/** * 解析服务器返回来的xml数据 * @param content * @return * @throws Exception */private static List<Video> parseXML(String content) throws Exception {SAXParserFactory factory = SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();XMLReader reader = parser.getXMLReader();List<Video> videoList = new ArrayList<Video>();reader.setContentHandler(new MyContentHandler(videoList));reader.parse(new InputSource(new StringReader(content)));return videoList;}

MyContentHandler代码:

public class MyContentHandler extends DefaultHandler {private List<Video> videoList;private Video video;private String tagName;public MyContentHandler() {}public MyContentHandler(List<Video> videoList) {this.videoList = videoList;}@Overridepublic void startDocument() throws SAXException {}@Overridepublic void endDocument() throws SAXException {}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if("video".equals(localName)) {video = new Video();}tagName = localName;}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if("video".equals(localName)) {videoList.add(video);}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("name".equals(tagName)) {String name = new String(ch,start,length).trim();if(StringTools.isNotEmpty(name)) {video.setName(name);}} else if("time".equals(tagName)) {String time = new String(ch,start,length).trim();if(StringTools.isNotEmpty(time)) {video.setTime(time);}}}}

三、最终得到解析出来的VO的List列表,在activity中用ListView显示出来

ListViewActivity代码:

public class ListViewActivity extends Activity {private ListView list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.listtext);list = (ListView)this.findViewById(R.id.list);try {List<Video> videolist = GetVideoService.getVideoList();System.out.println("--------------"+videolist);List<Map<String,String>> listItems = new ArrayList<Map<String,String>>();for(Video video : videolist) {Map<String,String> listItem = new HashMap<String, String>();listItem.put("name", video.getName());listItem.put("time", video.getTime());listItems.add(listItem);}SimpleAdapter adapter = new SimpleAdapter(Ku6Activity.this, listItems, R.layout.ku6, new String[]{"name","time"}, new int[]{R.id.name,R.id.time});list.setAdapter(adapter);} catch (Exception e) {Toast.makeText(Ku6Activity.this, "网络连接失败", Toast.LENGTH_SHORT).show();e.printStackTrace();}}}

更多相关文章

  1. Qt5.1.1 for android 环境配置
  2. Android番外03_Umeng友盟统计集成
  3. 【学习Android遇到的错误】Unable to resolve target 'android-9
  4. android Intent的一些用法
  5. flutter配置高德地图SDK
  6. android listView实现单选
  7. Android(安卓)常用命令
  8. Android(安卓)remake
  9. Android中Timer与TimerTask的使用 间隔执行

随机推荐

  1. C语言中的函数概念
  2. 练习2-13 求N分之一序列前N项和 (15分)
  3. 视频时序转换: Amiga PC接口升级为HDMI接
  4. Enclustra公司在ESC2016大会上推出Mercur
  5. Balloon-popping:一个基于Zynq架构,OpneCV
  6. 内嵌Xilinx FPGA,由VisualApllet编程实现
  7. 如何构建阿里小蜜算法模型的迭代闭环?
  8. 函数的嵌套调用和链式访问
  9. URL百分比编码与符号字符
  10. C语言函数功能的强大和入坑体会