Android從資源文件中最簡單解析XML文件

qianyu 12年前發布 | 37K 次閱讀 Android開發 移動開發 解析xml文件

在我第一篇的經驗中,說到了解析SD卡里面的XML文件,那么如何解析資源文件本身中的XML文件呢,經過研究我發現一個極其簡單的做法,下面開始正題。
第一:創建XML文件,XML文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <bookname>Android瘋狂講義</bookname>
        <bookauthor>小書</bookauthor>
        <bookprice>89.0</bookprice>
        <bookpublish>2008年</bookpublish>
    </book>
    <book>
        <bookname>XML瘋狂講義</bookname>
        <bookauthor>小書</bookauthor>
        <bookprice>100.0</bookprice>
        <bookpublish>2009年</bookpublish>
    </book>
    <book>
        <bookname>Java瘋狂講義</bookname>
        <bookauthor>小書</bookauthor>
        <bookprice>70.0</bookprice>
        <bookpublish>2012年</bookpublish>
    </book>
</books>
我把這個XML文件放在xml目錄下,這個目錄需要自己建立

第二:主界面非常簡潔,只有一個按鈕和一個文本框用來顯示解析的結果,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent" >
   
    <Button
        android:id="@+id/bn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="XmlPullParse解析xml文件"
        />
    <TextView
        android:id="@+id/textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>


第三:主文件的代碼,如下:
package com.example.xml1;

import java.io.IOException;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.os.Bundle;
import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button bn;
    private TextView textview;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setupview();
        this.setTitle("資源文件中解析xml文件");
        bn.setOnClickListener(new OnClickListener()
        {
   public void onClick(View v) {
    // TODO Auto-generated method stub
    String res="本結果通過XmlPullParse解析:"+"\n"+"\n";
    try
    {
     //創建一個資源ID
     XmlPullParser file=getResources().getXml(R.xml.books);
     int eventType=file.getEventType();
     try
     {
      while(eventType!=file.END_DOCUMENT)
      {
       String nodename=file.getName();
       switch(eventType)
       {
         case XmlPullParser.START_TAG:
         if("bookname".equals(nodename))
         {
          res+="書名:"+file.nextText()+"\n";
         }
         else if("bookauthor".equals(nodename))
         {
          res+="作者:"+file.nextText()+"\n";
         }
         else if("bookprice".equals(nodename))
         {
          res+="價格:"+file.nextText()+"\n";
         }
         else if("bookpublish".equals(nodename))
         {
          res+="出版日期:"+file.nextText()+"\n"+"\n";
         }
        break;
        default:
        break;
       }
       eventType=file.next();
      }
     }
     catch(IOException e)
     {
      e.printStackTrace();
     }
    }
    
    catch(XmlPullParserException e)
    {
     e.printStackTrace();
    }
    textview.setText(res);
    Toast.makeText(MainActivity.this, "解析成功", Toast.LENGTH_SHORT).show();
   }
        });
    }

    private void setupview()
    {
     bn=(Button)findViewById(R.id.bn);
     textview=(TextView)findViewById(R.id.textview);
    }
   
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
可以看到,不用創建XmlPullParseFactory工廠,直接找到資源ID

第四:運行結果如下:
未命名.jpg
可以看到,解析的正是XMl中的內容,可見在資源文件中解析XML文件是多么的簡單啊,我用的是Android 4.1SDK的

 本文由用戶 qianyu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!