获取服务器的xml文件并解析
发布时间:2020-12-16 05:15:13 所属栏目:百科 来源:网络整理
导读:获取服务器上的文件,在开发过程中应该是不陌生的一中操作,可以说是频繁的不能在频繁了,我使用的是Android应用去获取服务器上的文件,这里我也就是将这些代码保存在这,方便以后忘记的时候,回头还有得看,里面的命名是自己随便弄的,英语不好,不知道写什
获取服务器上的文件,在开发过程中应该是不陌生的一中操作,可以说是频繁的不能在频繁了,我使用的是Android应用去获取服务器上的文件,这里我也就是将这些代码保存在这,方便以后忘记的时候,回头还有得看,里面的命名是自己随便弄的,英语不好,不知道写什么。下面用代码说话还是比较实在 实现效果图: 获取网络数据,这里用的HttpClient方式来请求网络数据, public class RequestData { /** * get请求 * @throws Exception */ public static InputStream getRequest(String path) throws Exception{ //创建HttpClient对象 HttpClient client=new DefaultHttpClient(); //创建get请求 HttpGet get=new HttpGet(path); //执行请求并获取响应 HttpResponse response=client.execute(get); //如果响应码为200就表示请求成功 if(response.getStatusLine().getStatusCode()==200){ //获取InputStream对象 InputStream is=response.getEntity().getContent(); return is; } return null; } } 解析xml工具类,用的是DOM解析 public class ParseXmlService { /** * 解析xml * @throws Exception */ public static HashMap<String,String> parseXml(InputStream is) throws Exception{ //创建HashMap对象 HashMap<String,String> map=new HashMap<String,String>(); //创建解析器工厂类 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建DocumentBuilder对象 DocumentBuilder builder=factory.newDocumentBuilder(); //创建Document对象 Document document=builder.parse(is); //获取根节点 Element root=document.getDocumentElement(); //获取所有子节点 NodeList childNodes=root.getChildNodes(); //变量子节点 for(int i=0;i<childNodes.getLength();i++){ Node childNode=childNodes.item(i); if(childNode.getNodeType()==Node.ELEMENT_NODE){ //获取节点 Element childElement=(Element) childNode; //版本号 if("version".equals(childElement.getNodeName())){ map.put("version",childElement.getFirstChild().getNodeValue()); } //名称 else if("name".equals(childElement.getNodeName())){ map.put("name",childElement.getFirstChild().getNodeValue()); } //下载路径 else if("url".equals(childElement.getNodeName())){ map.put("url",childElement.getFirstChild().getNodeValue()); } } } return map; } }
public class MainActivity extends Activity { //声明控件对象 private Button parseXml; private TextView info; //构建请求路径 String path="http://192.168.1.19:8080/zeng/version.xml"; //创建消息处理机制 private Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0x11: //获取HashMap对象 HashMap<String,String> map=(HashMap<String,String>) msg.obj; //设置TextView信息 info.setText("版本号:"+map.get("version")+"n应用名称:"+map.get("name")+"n下载路径:"+map.get("url")); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置无标题 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //获取控件对象 parseXml=(Button) this.findViewById(R.id.btn_parse); info=(TextView) this.findViewById(R.id.tv_info); //为按钮绑定点击事件 parseXml.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(){ public void run() { //获取InputStream对象 InputStream is; try { is = RequestData.getRequest(path); //解析获取的xml HashMap<String,String> map=ParseXmlService.parseXml(is); //创建Message Message msg=new Message(); msg.what=0x11; msg.obj=map; //将Message装载到Handler中 handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); } }; }.start(); } }); } } 当然还有一个最中要的,就是要到AndroidManifest.xml文件中配置访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/> 这样才算的完成整个操作,代码就这么多咯,将就将就看,呵呵 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |