android-xml文件解析教程

阅读更多
  在讨论群里里面有人在问xml的解析方法,我就弄了个简单的demon来介绍我自己的方法下面的xml文件和读取的效果图

 



	测试1
	测试2
	测试3
	测试4
	测试5
	测试6
	测试7
	测试8
	测试9


 效果图:




 主要代码




package com.wjh.xmldemon;

import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParser;

import android.app.Activity;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.widget.TextView;

public class XmlDemonActivity extends Activity {
    /** Called when the activity is first created. */
	TextView tv = null;
	ArrayList list = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv =(TextView)findViewById(R.id.tv);
        list = getXmlData(this, R.xml.test);
        initData();
    }
    //初始化数据
    private void initData()
    {
    	StringBuffer sb = new StringBuffer();
    	int size = list.size();
    	for(int i = 0;i getXmlData(Context context,int id)
    {
    	ArrayList list = new ArrayList();
		  try {
			  //打开文档
				XmlResourceParser xml = context.getResources().getXml(id);
				int eventType = xml.next();
				try {
			        // 切换到下一个状态,并获得当前状态的类型
					Test test = null;
			        while ( true ) 
			        {
			        	
			        	if(test == null)
			        	{
			        		test = new Test();
			        	}
			           // 文档开始状态
			           if (eventType == XmlPullParser. START_DOCUMENT ) 
			           {
			           }
			           // 标签开始状态
			           else if (eventType == XmlPullParser. START_TAG ) 
			           {
			              // 将标签名称和当前标签的深度(根节点的 depth 是 1 ,第 2 层节点的 depth 是 2 ,类推)
			              switch (xml.getDepth())
			              {
			              case 1:
			                 break ;
			              case 2:
			            	  //获得属性name的值
			            	  /*
			            	   * 
									测试1
								 
			            	   */
			            	  //从上面可以看出test在tests下面,也是深度为2
			            	 test.setName(xml.getAttributeValue(null,"name"));
			            	  break;
			              }
			           }
			           // 读取标签内容状态
			           else if (eventType == XmlPullParser. TEXT ) 
			           {
			        	   //测试1获得标签中的数据
			        	   String str = xml.getText();
			        	   if(str!=null&&!str.equals(""))
			        	   {
			        		   test.setText(str);
			        		   list.add(test);
			        		   test = null;
			        	   }
			           }
			           else if (eventType == XmlPullParser. END_TAG ) 
			           {
			        	   //结束标签
			           }
			           // 文档结束状态
			           else if (eventType == XmlPullParser. END_DOCUMENT ) 
			           {
			              // 文档分析结束后,退出 while 循环
			              break ;
			           }
			           // 切换到下一个状态,并获得当前状态的类型
			           eventType = xml.next();
			 
			        }
			     } catch (Exception e) {
			        e.printStackTrace();
			     }
	        } catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		  return list;
    }
    //Test类
    class Test
    {
    	private String name;//name属性
    	private String text;//内容
    	public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getText() {
			return text;
		}
		public void setText(String text) {
			this.text = text;
		}
		
    }
}

 代码包:
  xmlDemon.rar
  • android-xml文件解析教程_第1张图片
  • 大小: 6.4 KB
  • xmlDemon.rar (44.4 KB)
  • 下载次数: 21
  • 查看图片附件

你可能感兴趣的:(xml,android,java,iteye)