Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 解析xml實現類似網易新聞客戶端

Android 解析xml實現類似網易新聞客戶端

編輯:關於Android編程

xml即可擴展標記語言。

可擴展標記語言,標准通用標記語言的子集,一種用於標記電子文件使其具有結構性的標記語言。 它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。 xml可以作為不同的應用程序之間的數據交換。 下面介紹一種解析xml的方法:
public class RSSL_1 extends ListActivity {

	private TextView mText;
	private String title = "\";
	String path;
	private List li = new ArrayList();

	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.newslist);
               //下面的if 語句是屏蔽掉4.0以後主線程下載時提示的異常,也可以把下載放到handle中
		if (android.os.Build.VERSION.SDK_INT > 9) {
	        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
	        StrictMode.setThreadPolicy(policy);
	    }
		mText = (TextView) findViewById(R.id.myText);
		Intent intent = getIntent();
		Bundle bundle = intent.getExtras();
		path = bundle.getString("path");
		li = getRss(path);//下載
		mText.setText(title);
		setListAdapter(new MyAdapter(getApplicationContext(), li));
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		News ns = li.get(position);
		Intent intent = new Intent();
		intent.setClass(RSSL_1.this, RSSL_2.class);
		Bundle bundle = new Bundle();
		bundle.putString("title", ns.get_title());
		bundle.putString("desc", ns.get_desc());
		bundle.putString("link", ns.get_link());
		intent.putExtras(bundle);
		startActivity(intent);
	}

	private List getRss(String path) {
		// TODO Auto-generated method stub
		List data = new ArrayList();
		URL url = null;
		try {
//			Toast.makeText(getApplicationContext(), "正在下載", Toast.LENGTH_LONG)
//					.show();
			url = new URL(path);
			SAXParserFactory spf = SAXParserFactory.newInstance();//解析xml用到的類
			SAXParser sp = spf.newSAXParser();
			XMLReader xr = sp.getXMLReader();
			MyHandler myExampleHandler = new MyHandler();//繼承defaulthandler 也是解析xml的基類
			xr.setContentHandler(myExampleHandler);
			xr.parse(new InputSource(url.openStream()));
			data = myExampleHandler.getParsedData();
			title = myExampleHandler.getRssTitle();

		} catch (Exception e) {
			Intent intent = new Intent();
			Bundle bundle = new Bundle();
			bundle.putString("error", "" + e);
			intent.putExtras(bundle);
			RSSL_1.this.setResult(99, intent);
			RSSL_1.this.finish();

		}
		return data;
	}
以上是最主要的核心代碼,整個工程可以去我的資源中下載,點擊下載 如有問題請留言,若轉載注明出處。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved