Android解析XML(PULL)展示到ListView
发布时间 - 2026-01-10 23:17:35 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
佛山网站制作系统,佛山企业变更地址网上办理步骤?
lovemo网页版地址 lovemo官网手机登录
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel如何自定义分页视图?(Pagination示例)
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
JavaScript如何实现路由_前端路由原理是什么
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
使用spring连接及操作mongodb3.0实例
如何快速搭建高效香港服务器网站?
javascript中闭包概念与用法深入理解
郑州企业网站制作公司,郑州招聘网站有哪些?
高防服务器租用如何选择配置与防御等级?
微信小程序 wx.uploadFile无法上传解决办法
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
奇安信“盘古石”团队突破 iOS 26.1 提权
想要更高端的建设网站,这些原则一定要坚持!
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何快速搭建高效服务器建站系统?
Python函数文档自动校验_规范解析【教程】
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
nginx修改上传文件大小限制的方法
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
微信公众帐号开发教程之图文消息全攻略
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
昵图网官方站入口 昵图网素材图库官网入口
如何续费美橙建站之星域名及服务?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何在万网开始建站?分步指南解析
香港服务器租用费用高吗?如何避免常见误区?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
如何用y主机助手快速搭建网站?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel怎么调用外部API_Laravel Http Client客户端使用
iOS中将个别页面强制横屏其他页面竖屏
JavaScript如何实现继承_有哪些常用方法
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel集合Collection怎么用_Laravel集合常用函数详解
JavaScript如何实现错误处理_try...catch如何捕获异常?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Bootstrap CSS布局之列表
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?

