package com.wyx.pullXml;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.ContentHandler;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.impl.conn.DefaultClientConnection;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;
import com.wyx.domain.Student;
import android.util.Xml;
/**
* XML�����ij��÷���
*/
//xmlPullParser.getAttributeCount(); //��ȡ�ýڵ����Ը���
//xmlPullParser.getAttributeName(index); //��ȡ�ýڵ���������
//xmlPullParser.getAttributeType(index); //��ȡ�ýڵ���������
//xmlPullParser.getAttributeValue(index); //��ȡ�ýڵ�����ֵ
//xmlPullParser.getEventType(); //��ȡ�ڵ����ͣ�XmlPullParser.END_TAG��XmlPullParser.START_TAG��
//XmlPullParser.START_DOCUMENT��XmlPullParser.END_DOCUMENT��
//xmlPullParser.nextText(); //��ȡ�ýڵ��ı�����
//xmlPullParser.next(); //��ȡ��һ���ڵ�
//xmlPullParser.nextTag(); //??
//xmlPullParser.getName(); //��ȡ�ýڵ�����
//xmlPullParser.getText(); //??
/**
* @author wangyx
* ����������XML�ļ���
*/
public class PullMXL {
public List<Student> list = null;
private Student student = new Student();
private InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("Student.xml");
public PullMXL(){
}
//��ȡXML�ļ������ݵķ���
public List<Student> getPullXML(){
try {
//<1.ʵ����������
//XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
//XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();
//<2.ʵ����������
XmlPullParser xmlPullParser = Xml.newPullParser();
xmlPullParser.setInput(inputStream, "UTF-8");
//��ȡ�ڵ�����
int eventType = xmlPullParser.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
//��ȡ�ڵ�����
String nodeName = xmlPullParser.getName();
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<Student>();
break;
case XmlPullParser.START_TAG:
if("student".equals(nodeName)){
//student = new Student();
student.setId(Integer.valueOf(xmlPullParser.getAttributeValue(0)));
student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));
}else if ("name".equals(nodeName)) {
student.setName(xmlPullParser.nextText());
}else if("sex".equals(nodeName)){
student.setSex(xmlPullParser.nextText());
}else if("age".equals(nodeName)){
student.setAge(Integer.parseInt(xmlPullParser.nextText()));
}else if("email".equals(nodeName)){
student.setEmail(xmlPullParser.nextText());
}else if("birthday".equals(nodeName)){
student.setBirthday(xmlPullParser.nextText());
}else if("memo".equals(nodeName)){
student.setMemo(xmlPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if("student".equals(nodeName)){
list.add(student);
}
break;
default:
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
// TODO: handle exception
}
return this.list;
}
//д��XML�ļ��ķ���
public void setPullXML(List<Student> stuList,FileOutputStream outputStream){
XmlSerializer xmlSerializer = Xml.newSerializer();
try {
xmlSerializer.setOutput(outputStream, "UTF-8");
/**
* @params:EnCoding���ĵ��Ƿ��������
*/
xmlSerializer.startDocument("UTF-8", true);
/**
* @params�������ռ䣬�ڵ���
*/
xmlSerializer.startTag(null, "students");
for(Student student:stuList){
xmlSerializer.startTag(null, "student");
xmlSerializer.attribute(null, "id", String.valueOf(student.getId()));
//��ӱ�ע
xmlSerializer.comment("***���ֽڵ�***");
xmlSerializer.startTag(null, "name");
xmlSerializer.text(student.getName());
xmlSerializer.endTag(null, "name");
xmlSerializer.comment("***����ڵ�***");
xmlSerializer.startTag(null, "age");
xmlSerializer.text(student.getName());
xmlSerializer.endTag(null, "age");
xmlSerializer.endTag(null, "student");
}
xmlSerializer.endTag(null, "students");
xmlSerializer.endDocument();
outputStream.flush(); //������д���ļ��е���һ�ַ�ʽ��ֻҪ�����ļ������Ӽ��ɣ�������һ�ַ�ʽ��write()��ʽд�롿��
//outputStream.write(content.getBytes[]);
outputStream.close();
} 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();
}
}
}