全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android解析XML(PULL)展示到ListView

Android解析XML展示到ListView运行后的效果图如下:

服务端的请求页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <a href="studentActiongetXML.action" rel="external nofollow" >获取XML数据</a><br/>


</body>
</html>

服务端返回结果的页面

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<students>
<c:forEach items="${students}" var="s">
 <student name="${s.name}">
  <sex>${s.sex}</sex>
 </student>
 </c:forEach>
</students>

服务端的Java代码

package com.zking.action;

import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.zking.entity.Student;

public class StudentAction extends ActionSupport{

public String getXML() throws Exception {

 //查询数据库,获取数据
 List<Student> students=new ArrayList<>();
 for (int i = 1; i <=20; i++) {
  Student student=new Student("小霜"+i, "女");
  students.add(student);
 }

 //将对象集合保存到请求域中
 ServletActionContext.getRequest().setAttribute("students", students);
 return "dataResult";
 } 
} 

服务端的配置文件(struts.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
 <struts>
 <package name="myPackage" extends="struts-default">

  <action name="studentAction*" class="com.zking.action.StudentAction" method="{1}">
   <result name="dataResult">/dataResult.jsp</result>

  </action>
 </package>
 </struts>

服务端的运行结果

Android (布局文件 activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
 android:layout_width="match_parent" android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:orientation="vertical"
 tools:context="com.example.g150825_android29_parsexml.MainActivity">

 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="获取XML"
 android:onClick="getXML"
 />
 <ListView
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/lv_main_list"
 ></ListView>
</LinearLayout>

Android(Java代码 MainActivity)

package com.example.g150825_android29_parsexml;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.Xml;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import org.xmlpull.v1.XmlPullParser;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
 List<Student> studentList=new ArrayList<>();
 private ListView lv_main_list;
 private MyAdater myAdater;
 private ProgressDialog progressDialog;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 //实例化进度条对话框
 progressDialog = new ProgressDialog(this);
 progressDialog.setMessage("正在拼命加载中.....");

 lv_main_list = (ListView) findViewById(R.id.lv_main_list);

 //实例化适配器
 //设置适配器
 myAdater = new MyAdater();
 lv_main_list.setAdapter(myAdater);
 }

 class MyAdater extends BaseAdapter{

 @Override
 public int getCount() {
  return studentList.size();
 }

 @Override
 public Object getItem(int i) {
  return studentList.get(i);
 }

 @Override
 public long getItemId(int i) {
  return i;
 }

 @Override
 public View getView(int i, View view, ViewGroup viewGroup) {
  LinearLayout linearLayout=new LinearLayout(MainActivity.this);
  linearLayout.setOrientation(LinearLayout.HORIZONTAL);

  TextView textViewName=new TextView(MainActivity.this);
  textViewName.setText(studentList.get(i).getName());

  TextView textViewSex=new TextView(MainActivity.this);
  textViewSex.setText(studentList.get(i).getSex());

  linearLayout.addView(textViewName);
  linearLayout.addView(textViewSex);

  return linearLayout;
 }
 }

 public void getXML(View view){
 new MyTask().execute();
 }
 class MyTask extends AsyncTask{
 private Student student;

 @Override
 protected void onPreExecute() {
  super.onPreExecute();
  progressDialog.show();
 }

 @Override
 protected Object doInBackground(Object[] objects) {
  //01.确定网络数据
  String path="http://192.168.43.152:8080/G150825_S2SH/studentActiongetXML.action";

  try {
  //02.实例化URL
  URL url=new URL(path);
  //03.获取连接对象
  HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
  //04.设置请求方式
  httpURLConnection.setRequestMethod("GET");
  //05.设置请求连接超时的时间(优化)
  httpURLConnection.setConnectTimeout(5000);
  //06.获取响应码(结果码)
  int code=httpURLConnection.getResponseCode();
  if (code==200){
   //07.获取服务器返回过来的数据
   InputStream is=httpURLConnection.getInputStream();
   //测试(打印)
   //缓冲字符流
//   BufferedReader br=new BufferedReader(new InputStreamReader(is));
//   String str=null;
//   while ((str=br.readLine())!=null){
//   Log.i("test",str);
//   }
   //解析XML(PULL)
   XmlPullParser xmlPullParser=Xml.newPullParser();
   xmlPullParser.setInput(is,"UTF-8");
   int type=xmlPullParser.getEventType();
   while (type!=XmlPullParser.END_DOCUMENT){
   switch (type){

    case XmlPullParser.START_TAG:
    //获取开始标签
    String startTagName=xmlPullParser.getName();
    if ("student".equals(startTagName)){
     student = new Student();
     //获取name属性值
     String name=xmlPullParser.getAttributeValue(0);
     student.setName(name);
    }else if("sex".equals(startTagName)){
     //获取sex的文本值
     String sex=xmlPullParser.nextText();
     student.setSex(sex);

    }

    break;
    case XmlPullParser.END_TAG:
    //获取到结束标签的名字
    String endTagName=xmlPullParser.getName();
    if("student".equals(endTagName)){
     studentList.add(student);

    }

    break;
   }
   type=xmlPullParser.next();
   }
  }
  } catch (Exception e) {
  e.printStackTrace();
  }

  return null;
 }

 @Override
 protected void onPostExecute(Object o) {
  super.onPostExecute(o);
  //通知适配器发生改变
  myAdater.notifyDataSetChanged();
  progressDialog.cancel();

 }
 }
}

Android (实体类 Student)

package com.example.g150825_android29_parsexml;

public class Student {
 private String name;
 private String sex;
 public Student() {
 super();
 // TODO Auto-generated constructor stub
 }
 public Student(String name, String sex) {
 super();
 this.name = name;
 this.sex = sex;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getSex() {
 return sex;
 }
 public void setSex(String sex) {
 this.sex = sex;
 }
}

在清单文件中添加权限即可(AndroidManifest.xml)

 <!--添加网络权限-->
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # XML  # ListView  # Android在layout xml中使用ViewStub完成动态加载问题  # Android自定义View中attrs.xml的实例详解  # Android实现在xml文件中引用自定义View的方法分析  # 详解Android XML中引用自定义内部类view的四个why  # Android Xml转换为View过程详解  # 服务端  # 对话框  # 配置文件  # 大家多多  # 进度条  # 加载中  # 实体类  # public  # StudentAction  # extends  # Student  # ActionSupport  # entity  # String  # int  # getRequest  # add  # getXML  # setAttribute  # Exception 


相关文章: 如何在IIS中新建站点并解决端口绑定冲突?  如何在IIS服务器上快速部署高效网站?  如何选择PHP开源工具快速搭建网站?  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何配置支付宝与微信支付功能?  如何通过可视化优化提升建站效果?  制作表格网站有哪些,线上表格怎么弄?  建站DNS解析失败?如何正确配置域名服务器?  宝塔Windows建站如何避免显示默认IIS页面?  广州营销型建站服务商推荐:技术优势与SEO优化解析  香港网站服务器数量如何影响SEO优化效果?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何用腾讯建站主机快速创建免费网站?  如何通过WDCP绑定主域名及创建子域名站点?  广东企业建站网站优化与SEO营销核心策略指南  如何在香港服务器上快速搭建免备案网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  建站OpenVZ教程与优化策略:配置指南与性能提升  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  建站主机服务器选型指南与性能优化方案解析  常州企业网站制作公司,全国继续教育网怎么登录?  高防服务器租用首荐平台,企业级优惠套餐快速部署  黑客如何利用漏洞与弱口令入侵网站服务器?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  专业公司网站制作公司,用什么语言做企业网站比较好?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何解决VPS建站LNMP环境配置常见问题?  建站之星收费标准详解:套餐费用及年费价格表一览  在线教育网站制作平台,山西立德教育官网?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  制作网站公司那家好,网络公司是做什么的?  Swift中swift中的switch 语句  实惠建站价格推荐:2025年高性价比自助建站套餐解析  简历在线制作网站免费版,如何创建个人简历?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  英语简历制作免费网站推荐,如何将简历翻译成英文?  代购小票制作网站有哪些,购物小票的简要说明?  如何实现建站之星域名转发设置?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站之星导航如何优化提升用户体验?  网站制作公司排行榜,四大门户网站排名?  小程序网站制作需要准备什么资料,如何制作小程序?  建站之星如何实现网站加密操作?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  ,石家庄四十八中学官网?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  简单实现Android验证码  c# 服务器GC和工作站GC的区别和设置 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。