xml创建与解析代码

写一个很简单的例子记录一下XML的创建与解析。

创建与解析其实是两个互逆的过程,会了其中一个对应的就能写出来。

创建用XmlSerializer xmlSerializer=Xml.newSerializer();

解析用XmlPullParser xmlPullParser=Xml.newPullParser();

[java] view plaincopy
package com.example.xmlborn;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;

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

import android.R.xml;
import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
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 implements OnClickListener{
Button xmlpullButton;
private String result;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String resource=produceXML();
textView=(TextView) findViewById(R.id.text);
xmlpullButton=(Button) findViewById(R.id.button1);
xmlpullButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
result=parseXML();
if (result!=null) {
textView.setText(result);
}else {
Toast.makeText(getApplicationContext(),"null",1000).show();
}

break;

default:
break;
}
}
private String produceXML() {
// TODO Auto-generated method stub
StringWriter writer=new StringWriter();
XmlSerializer xmlSerializer=Xml.newSerializer();
ArrayList<Beauty> list=getData();
try {
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("UTF-8",true);
xmlSerializer.startTag(null,"beauties");
for (Beauty beauty:list) {

xmlSerializer.startTag(null,"beautyname");
xmlSerializer.text(beauty.getNameString());
xmlSerializer.endTag(null,"beautyname");
xmlSerializer.startTag(null,"age");
xmlSerializer.text(beauty.getAge());
xmlSerializer.endTag(null,"age");

}
xmlSerializer.endTag(null,"beauties");
xmlSerializer.endDocument();

} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return writer.toString();
}

private ArrayList<Beauty> getData() {
// TODO Auto-generated method stub
ArrayList<Beauty> list=new ArrayList<Beauty>();
Beauty lily=new Beauty("lily","23");
Beauty lucy=new Beauty("lucy","36");
list.add(lily);
list.add(lucy);
return list;
}



private String parseXML() {
result="通过pull解析结果为:";
String xmlString=produceXML();
StringReader in=new StringReader(xmlString);
XmlPullParser xmlPullParser=Xml.newPullParser();
try {
xmlPullParser.setInput(in);
int type=xmlPullParser.getEventType();
while (type!=XmlPullParser.END_DOCUMENT) {
String nodeName=xmlPullParser.getName();
switch (type) {
case XmlPullParser.START_TAG:
if("beautyname".equals(nodeName)){
result +="姓名:"+xmlPullParser.nextText();
}if ("age".equals(nodeName)) {
result +="年龄:"+xmlPullParser.nextText();
}
break;


}
type=xmlPullParser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
// TODO Auto-generated method stub

}

class Beauty{

String nameString,age;

public String getNameString() {
return nameString;
}

public void setNameString(String nameString) {
this.nameString = nameString;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public Beauty(String nameString, String age) {
super();
this.nameString = nameString;
this.age = age;
}

}
}
代码地址:http://download.csdn.net/detail/u010095768/5534015
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值