前段时间用ios做了个xml的解析,文件解析还算顺利吧。在ios上的解析步骤:1.使用第三方库

2.发动请求       3.解析xml           4.显示数据

       随后做了一个android上的解析模块,流程如下:1.发送一个http请求(java中有内置的http的相关代码,不再粘贴) 2.解析数据    3.展示数据

       主要粘贴一下android上解析模块,这一块花费了点时间,我当初不怎么看重这一块,一直以为是别的地方出的错。后来发现错误有点台离奇了。不多说,粘贴代码        

<?xmlversion="1.0"encoding="utf-8"?>

<books>

<book>

<id>1001</id>

<name>Thinking In Java</name>

<price>80.0</price>

</book>

<book>

<id>1004</id>

<name>Core Java aa</name>

<price>120.0</price>

</book>

<book>

<id>1002</id>

<name>Core Java</name>

<price>90.0</price>

</book>

<book>

<id>1003</id>

<name>Hello, Andriod</name>

<price>100.0</price>

</book>

</books>

解析的就是这个xml文件,不多说了。是按照csdn上的一个实例操作的。

实体类:

/**

*

*/

package parse;


/**

* @author admin

* @param mID

* @param mName

* @param mPrice

*

*/

public class Book {


private int    mID;

private String mName;

private float  mPrice;

public int getmID() {

return mID;

}

public void setmID(int mID) {

this.mID = mID;

}

public String getmName() {

return mName;

}

public void setmName(String mName) {

this.mName = mName;

}

public float getmPrice() {

return mPrice;

}

public void setmPrice(float mPrice) {

this.mPrice = mPrice;

}

}

解析类:

@Override

public List<Book> parse(InputStream is) throws Exception {

// TODO Auto-generated method stub

List<Book> tBooks = null;

Book tBook = null;

XmlPullParser tParse = Xml.newPullParser();

tParse.setInput(is, "UTF-8");

int tEventType = tParse.getEventType();

while (XmlPullParser.END_DOCUMENT != tEventType) {

switch(tEventType) {

case XmlPullParser.START_DOCUMENT:

tBooks = new ArrayList<Book>();

break;

case XmlPullParser.START_TAG:

if (("book").equals(tParse.getName())) {

tBook = new Book();

} elseif (("id").equals(tParse.getName())) {

tEventType = tParse.next();

tBook.setmID(Integer.parseInt(tParse.getText()));

} elseif (("name").equals(tParse.getName())) {

tEventType = tParse.next();

tBook.setmName(tParse.getText());

} elseif (("price").equals(tParse.getName())) {

tEventType = tParse.next();

tBook.setmPrice(Float.parseFloat(tParse.getText()));

}

break;

case XmlPullParser.END_TAG:

if (("book").equals(tParse.getName())) {

tBooks.add(tBook);

tBook = null;

}

break;

}

tEventType = tParse.next();

}

return tBooks;

}

主界面:

privatestaticfinal String TAG = "XML";

private BookParser mParser;

private List<Book> mBooks;

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.ui_main);

Button tReadBtn   = (Button) findViewById(R.id.readBtn);

Button tWriteBtn  = (Button) findViewById(R.id.writeBtn);

ListView tListView  = (ListView)findViewById(R.id.listView);

try {

InputStream tIs = getAssets().open("books.xml");

System.out.println(tIs);

mParser = new PullBookParse();

Log.i(TAG, "mParser" + mParser);

System.out.println("mBooks" + mBooks);

mBooks  = mParser.parse(tIs);

System.out.println("mBooks=" + mBooks);

//生成动态数组,加入数据

ArrayList<HashMap<String, Object>> tlistItem = new ArrayList<HashMap<String,Object>>();

for (Book tBook : mBooks) {

System.out.println("price = " + tBook.getmPrice() + "id = " + tBook.getmID() + "name = " + tBook.getmName());

Log.i(TAG, tBook.toString());

HashMap<String, Object> tMap = new HashMap<String, Object>();

tMap.put("ItemTextView1", tBook.getmID());

tMap.put("ItemTextView2", tBook.getmName());

tMap.put("ItemTextView3", tBook.getmPrice());

tlistItem.add(tMap);

}

//生成适配的 Item和动态数组对应的元素

SimpleAdapter tListItemAdapter = new SimpleAdapter(this, tlistItem,

R.layout.listview_item,

new String[]{"ItemTextView1", "ItemTextView2", "ItemTextView3"},

newint[] { R.id.textView1, R.id.textView2, R.id.textView3 });

tListView.setAdapter(tListItemAdapter);

} catch (Exception e) {

// TODO: handle exception

Log.e(TAG, e.getMessage());

}

tReadBtn.setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

// TODO Auto-generated method stub

}

});

tWriteBtn.setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

// TODO Auto-generated method stub

try {

System.out.println("write");

String tXml = mParser.serialize(mBooks); //序列化

FileOutputStream tFOS = openFileOutput("books.xml", Context.MODE_PRIVATE);

tFOS.write(tXml.getBytes("UTF-8"));

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

});

}


@Override

publicboolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.ui_main, menu);

returntrue;

}

没什么技术含量。一点意义都没有。就这个解析,浪费了我2h。下次就不会这么多时间了。

关于屏幕适配,就不多说了,网上有太多类似的文章了,个人建议好好的实践实践。收获匪浅的。