写一个很简单的例子记录一下XML的创建与解析。
创建与解析其实是两个互逆的过程,会了其中一个对应的就能写出来。
创建用XmlSerializer xmlSerializer=Xml.newSerializer();
解析用XmlPullParser xmlPullParser=Xml.newPullParser();
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();
ArrayListlist=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 ArrayListgetData() {
// TODO Auto-generated method stub
ArrayListlist=new ArrayList ();
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;
}
}
}