Android解析XML文件
在Android项目中,我们经常使用xml序列化以及xml的解析
今天我们通过一个手机号码测试案例来学习一下使用PULL解析器解析XML文件。
首先我们将text.XML文件到assets目录下,文件内容如下:
<?xml version='1.0' encoding='gbk' standalone='yes' ?> <a> <name>13512345678</name> <b>重庆移动神州行卡</b> <c>有得有失,华而不实,须防劫财,始保平安 吉带凶</c> </a>
解析之前,在layout目录下新建一个布局文件pulltest.xml,以方便后面显示文本,其内容如下:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="cn.ck.xml.MainActivity" > 7 8 <TextView 9 android:id="@id/tv" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" /> 12 13 </LinearLayout>
在src目录下的Activity内容如下:
1 package cn.ck.xml; 2 3 import java.io.InputStream; 4 import org.xmlpull.v1.XmlPullParser; 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.util.Xml; 8 import android.widget.TextView; 9 import android.widget.Toast; 10 11 public class MainActivity extends Activity { 12 private TextView tv; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 //找到 19 tv = (TextView) findViewById(R.id.tv); 20 try { 21 //通过assertmanager的open方法获取到beauties.xml文件的输入流 22 InputStream is = this.getAssets().open("text.xml"); 23 // 获得解析器 24 XmlPullParser parser = Xml.newPullParser(); 25 // 设置解析器的字体编码 26 parser.setInput(is, "gbk"); 27 //用xmlpillparser中的方法获取事件类型 28 int type = parser.getEventType(); 29 //创建stringbuilder 30 StringBuilder sb = new StringBuilder(); 31 //用循环判断事件类型,从而获取xml中想得到的数据 32 while (type != XmlPullParser.END_DOCUMENT) { 33 if (type == XmlPullParser.START_TAG) { 34 if ("name".equals(parser.getName())) { 35 String namestr = parser.nextText(); 36 sb.append("手机号:" + namestr); 37 } else if ("b".equals(parser.getName())) { 38 String bstr = parser.nextText(); 39 sb.append("归属地:" + bstr); 40 } else if ("c".equals(parser.getName())) { 41 String cstr = parser.nextText(); 42 sb.append("手机号运势:" + cstr); 43 } 44 } 45 //指向下一个事件 46 type = parser.next(); 47 } 48 //关流 49 is.close(); 50 //将获得的数据显示到页面 51 tv.setText(sb.toString()); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 Toast.makeText(this, "解析失败", 0).show(); 55 } 56 } 57 58 }
右键运行一下android project.截图如下:

另外:从网上下载xstream-1.47 jar 包,利用好api,解析就没那么复杂了.
浙公网安备 33010602011771号