1. 程式人生 > >Android 解析xml檔案

Android 解析xml檔案

Android 中原始的xml檔案一般儲存在/res/xml路徑下,在用ADT開發中沒有該檔案,需要自己去建立一個xml的資料夾

成功定義一個xml資源後,在工程中若要引用該xml檔案

1 在xml檔案中引用語法

   xml.file_name

2 在java程式碼中語法格式:

 R.xml.file_name;

 在java程式中獲取實際的xml文件,可以通過Resources的兩個方法來獲取:

    1   XmlResourceParse  getXml(int id): 獲取xml文件,並使用一個XmlPullParser來解析該xml文件,該方法返回一個解析器物件

    2  InputStream  openRawResource(int id) :獲取XML文件對應的輸出流

程式碼:

<?xml version="1.0" encoding="utf-8"?>
<books>
      <book price="99.0" time="2011" >Ajax講義</book> 
      <book price="99.0" time="2009" >瘋狂android講義</book>
      <book price="99.0" time="2010" >Ajax講義</book> 
</books>
java程式碼
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btn = (Button)findViewById(R.id.btn1);
		OnClickListener listen = new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				XmlResourceParser xrp = getResources().getXml(R.xml.books);//獲取xml文件
				try
				{
					StringBuilder  sb = new StringBuilder("");
					while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT)//判斷有沒有到文件的結尾處
					{
						if(xrp.getEventType() == XmlResourceParser.START_TAG)//遇到開始標籤
						{
							String tagName = xrp.getName();//獲取標籤的標籤名
							if(tagName.equals("book"))
							{
								String bookprice = xrp.getAttributeValue(null, "price");
								sb.append("價格");
								sb.append(bookprice);
								String booktime = xrp.getAttributeValue(1);//通過屬性索引來獲取屬性值
								sb.append("   出版日期");
								sb.append(booktime);
								sb.append("書名");
								sb.append(xrp.nextText());//獲取文字節點的值
							}
							sb.append("\n");
							
						}
						xrp.next();//游標下移
					}
				
					TextView show = (TextView)findViewById(R.id.text1);
					show.setText(sb.toString());
				}
				catch(XmlPullParserException e)
				{
					e.printStackTrace();
				}
				catch(IOException e)
				{
					e.printStackTrace();
				}
			
				
				
			}
		};
		btn.setOnClickListener(listen);
	}