android xml解析实例,Android之解析XML实例

1、以下是使用SSH框架生成xml

一、第一步写一个实体类(Person)

package com.zking.entity;

public class Person {

private int pid;

private String pname;

private int page;

public Person() {

super();

}

public Person(String pname, int page) {

super();

this.pname = pname;

this.page = page;

}

public int getPid() {

return pid;

}

public void setPid(int pid) {

this.pid = pid;

}

public String getPname() {

return pname;

}

public void setPname(String pname) {

this.pname = pname;

}

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

@Override

public String toString() {

return "Person [pid=" + pid + ", pname=" + pname + ", page=" + page + "]";

}

}

二、第二 配置Struts配置文件

/login.jsp

三、展示数据库数据(xml)

${p.pname}

${p.page}

2、以下是使用pull解析xml文件将会把数据展示到手机页面

用listview展示数据

MainActivity

package com.example.android_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 {

ListPersonList=new ArrayList<>();

private ListView listview;

private ProgressDialog progressDialog;

private Myadater myadater;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//实例化进度条对话框

progressDialog = new ProgressDialog(this);

progressDialog.setMessage("拼命加载中......");

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

//实例化适配器

myadater = new Myadater();

listview.setAdapter(myadater);

}

class Myadater extends BaseAdapter{

@Override

public int getCount() {

return PersonList.size();

}

@Override

public Object getItem(int i) {

return PersonList.get(i);

}

@Override

public long getItemId(int i) {

return i;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

LinearLayout layout=new LinearLayout(MainActivity.this);

layout.setOrientation(LinearLayout.HORIZONTAL);

TextView textViewpid=new TextView(MainActivity.this);

textViewpid.setText(PersonList.get(i).getPid()+"");

TextView textViewName=new TextView(MainActivity.this);

textViewName.setText(PersonList.get(i).getPname());

TextView textViewsex=new TextView(MainActivity.this);

textViewsex.setText(PersonList.get(i).getPage()+"");

layout.addView(textViewpid);

layout.addView(textViewName);

layout.addView(textViewsex);

return layout;

}

}

public void content(View view){

new MyTask().execute();

}

class MyTask extends AsyncTask{

private Person person;

@Override

protected void onPreExecute() {

super.onPreExecute();

progressDialog.show();

}

@Override

protected Object doInBackground(Object[] objects) {

//获取网络数据XML

//01.确定网络路径http://localhost:8080/mySSH/personActionadd.action

String path="http://192.168.23.1:8080/mySSH/personActionaddperson.action";

try {

//02.实例化URL

URL url=new URL(path);

//03获取连接对象

HttpURLConnection connection= (HttpURLConnection) url.openConnection();

//04.设置请求方式

connection.setRequestMethod("GET");

//05.设置请求连接超时的时间(优化)

connection.setConnectTimeout(5000);

//06.获取响应码,结果码

int code=connection.getResponseCode();

if (code==200){

//07.获取服务器返回过来的数据

InputStream is=connection.getInputStream();

//解析PULL

XmlPullParser xpp= Xml.newPullParser();

xpp.setInput(is,"UTF-8");

int type=xpp.getEventType();

while(type!=XmlPullParser.END_DOCUMENT){

switch (type) {

case XmlPullParser.START_TAG:

//获取开始标签的名字

String startTagName=xpp.getName();

Log.i("test",""+"startTagName"+startTagName);

if("person".equals(startTagName)){

person = new Person();

//获取name属性值

int pid=Integer.parseInt(xpp.getAttributeValue(0));

Log.i("test",""+pid);

person.setPid(pid);

}else if("pname".equals(startTagName)){

//获取sex的文本值

String pname=xpp.nextText();

Log.i("test",""+pname);

person.setPname(pname);

}else if("page".equals(startTagName)){

//获取sex的文本值

int page=Integer.parseInt(xpp.nextText());

Log.i("test",""+page);

person.setPage(page);

}

break;

case XmlPullParser.END_TAG:

//获取到结束标签的名字

String endTagName=xpp.getName();

Log.i("test",""+endTagName);

if("person".equals(endTagName)){

PersonList.add(person);

}

break;

}

type=xpp.next();

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(Object o) {

super.onPostExecute(o);

//通知适配器发生改变

myadater.notifyDataSetChanged();

progressDialog.cancel();

}

}

}

//添加网络权限

uses-permission>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android解析XML可以使用Android提供的XmlPullParser类或者使用第三方库如DOM、AX或者XML Pull Parser。下面是使用XmlPullParser类解析XML的一个示例: 1. 首先,将XML文件放置在res/xml目录下,例如命名为sample.xml。 2. 在代码中使用XmlPullParser来解析XML文件: ```java try { // 获取XML资源的输入流 InputStream inputStream = getResources().openRawResource(R.xml.sample); // 创建XmlPullParser实例 XmlPullParser xmlPullParser = Xml.newPullParser(); xmlPullParser.setInput(inputStream, null); // 开始解析文件 int eventType = xmlPullParser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { String tagName = xmlPullParser.getName(); if (tagName.equals("tag_name")) { // 解析标签内容 String tagContent = xmlPullParser.nextText(); // 处理解析到的内容 } } eventType = xmlPullParser.next(); } } catch (Exception e) { e.printStackTrace(); } ``` 在上述代码中,我们使用`getResources().openRawResource(R.xml.sample)`来获取XML资源的输入流,并将其传递给XmlPullParser的`setInput()`方法来设置输入流。 然后,通过调用`getEventType()`方法获取当前事件类型,并通过`getName()`方法获取当前标签的名称。 在标签开始的地方,我们可以根据标签名称执行相应的操作。例如,如果标签名为"tag_name",我们可以调用`nextText()`方法获取标签内容,并对其进行处理。 最后,通过调用`next()`方法来获取下一个事件类型,直到解析结束。 这只是一个基本的示例,你可以根据自己的需求进行更复杂的解析操作。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值