1.设置资源/res/raw/demo.txt,/res/xml/db_setting.xml [让我们荡起双桨] 让我们荡起双桨,小船儿推开波浪 海面倒映着白塔,四周环绕着绿树红墙 小船儿轻轻飘荡在水中 迎面吹来了凉爽的风 红领巾迎着太阳,阳光洒在海面上 水中鱼儿望着我们 悄悄听我们愉快歌唱 小船儿轻轻飘荡在水中 迎面吹来了凉爽的风 做完了一天的功课,我们来尽情欢乐 我问你亲爱的伙伴 谁给我们安排下幸福的生活? 小船儿轻轻飘荡在谁中 迎面吹来了凉爽的风 <Setting> <Url value="jdbc:oracle:thin:@localhost:1521/foolstudio"/> <User value="foolstudio"/> <Password value="master"/> </Setting> 2.设置布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LAY_CONTENT" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:padding="8sp" android:gravity="center_horizontal" /> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0,1" > <TableRow> <Button android:id="@+id/BTN_INIT" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Read Raw" /> <Button android:id="@+id/BTN_ACTION" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Read XML" /> </TableRow> </TableLayout> <EditText android:id="@+id/TXT_CONTENTS" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical" android:editable="false" android:textSize="6pt" /> </LinearLayout> 3.写代码 package foolstudio.demo.app; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.content.res.XmlResourceParser; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class FilesResDemoAct extends Activity implements OnClickListener { private Button mBtnRaw = null; private Button mBtnXml = null; private EditText mTxtContents = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mBtnRaw = (Button)findViewById(R.id.BTN_INIT); mBtnXml = (Button)findViewById(R.id.BTN_ACTION); // mTxtContents = (EditText)findViewById(R.id.TXT_CONTENTS); mBtnRaw.setOnClickListener(this); mBtnXml.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId() ) { case R.id.BTN_INIT: { clearText(); doRaw(); break; } case R.id.BTN_ACTION: { clearText(); doXml(); break; } } } //读取原始文件 private void doRaw() { // TODO Auto-generated method stub InputStream is = this.getResources().openRawResource(R.raw.demo); try { doRead(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //通过输入流进行读取 private void doRead(InputStream is) throws IOException { // TODO Auto-generated method stub DataInputStream dis = new DataInputStream(is); byte[] buffer = new byte[is.available()]; dis.readFully(buffer); printText(new String(buffer, "GBK")); dis.close(); is.close(); } private void doXml() { // TODO Auto-generated method stub XmlResourceParser parser = this.getResources().getXml(R.xml.db_setting); try { doParse(parser); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //通过XML解析器进行解析 private void doParse(XmlPullParser parser) throws XmlPullParserException, IOException { // TODO Auto-generated method stub int eventType = parser.getEventType(); while (true) { switch(eventType) { case XmlPullParser.END_DOCUMENT: { printText("End document"); return; //break; } case XmlPullParser.END_TAG: { printText("</"+parser.getName()+">"); break; } case XmlPullParser.START_DOCUMENT: { printText("Start document"); break; } case XmlPullParser.START_TAG: { parserTag(parser); break; } case XmlPullParser.COMMENT: { parseComment(parser); break; } case XmlPullParser.TEXT: { if(parser.isWhitespace() ) { //掠过空白 break; } else { printText(parser.getText() ); } break; } } eventType = parser.nextToken(); } } //解析注释 private void parseComment(XmlPullParser parser) { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); sb.append("<!--"); sb.append(parser.getText() ); sb.append("-->"); printText(sb.toString() ); } //解析标记 private void parserTag(XmlPullParser parser) { // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); sb.append('<'); sb.append(parser.getName() ); int attrsCount = parser.getAttributeCount(); for(int i = 0; i < attrsCount; ++i) { sb.append(' '); sb.append(parser.getAttributeName(i) ); sb.append("=/""); sb.append(parser.getAttributeValue(i) ); sb.append("/""); } sb.append('>'); printText(sb.toString() ); } private void clearText() { mTxtContents.setText(""); } private void printText(String text) { mTxtContents.append(text); mTxtContents.append("/n"); } //-------------------------------------------------------------------------- };