pull解析
//bean里封装id,name,sex,age
List<bean> list=new ArrayList<bean>();
private String tagname;
private bean be;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pullxml();
lv=(ListView)findViewById(R.id.lv);
ArrayAdapter<bean> ad=new ArrayAdapter<bean>(MainActivity.this, android.R.layout.simple_list_item_1, list);
lv.setAdapter(ad);
}
public void pullxml(){
// 1 得到pull解析器
XmlPullParser parser=Xml.newPullParser();
try {
// 2 加载需要解析的文档
parser.setInput(getAssets().open("data.xml"),"utf-8");
// 3 开始读取文档
int type=parser.getEventType();
//如果文档读取没有读到结束标签,循环读取文档里的内容
while(type!=XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_DOCUMENT:
System.out.println("===============开始读取文档");
break;
case XmlPullParser.START_TAG:
//读取到开始标签,把标签名进行读取<person>
tagname=parser.getName();
System.out.println(tagname+"++++++++++++++++标签名");
if(tagname.equals("person")){
be = new bean();
String id=parser.getAttributeValue(0).trim();
be.setId(Integer.parseInt(id));
}
break;
case XmlPullParser.TEXT:
if(tagname.equals("name")){
be.setName(parser.getText());
}else if(tagname.equals("sex")){
String tsex=parser.getText().trim();
be.setSex(tsex);
}else if(tagname.equals("age")){
String tage=parser.getText().trim();
be.setAge(Integer.parseInt(tage));
}
break;
case XmlPullParser.END_TAG:
//结束时,对标签名赋值
tagname=parser.getName();
//如果结束标签为</person>
if(tagname.equals("person")){
list.add(be);
}
tagname="";
break;
default:
break;
}
type=parser.next();
}
System.out.println("===============文档读取完毕"+list);
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
sax解析
//bean里封装id,name,age属性
List<bean> list=new ArrayList<bean>();
private ContentHandler handler=new DefaultHandler(){
private String targetName;
private bean be;
@Override
public void startDocument() throws SAXException {
System.out.println("开始读文档---------");
super.startDocument();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("结束读文档-----------");
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("开始-----------"+localName);
targetName = localName;
if(targetName.equals("person")){
//get bean's id
String id=attributes.getValue("id");
be.setId(Integer.parseInt(id));
}
super.startElement(uri, localName, qName, attributes);
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("结束-----------"+localName);
if(localName.equals("person")){
list.add(be);
System.out.println("++++++++++"+list.size());
be=null;
}
targetName=null;
super.endElement(uri, localName, qName);
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String content=new String(ch, start, length);
System.out.println("读取的内容-----------"+content);
if("name".equals(targetName)){
be.setName(content);
}else if("age".equals(targetName)){
be.setAge(content);
}
super.characters(ch, start, length);
}
};
private ListView lv;
private ArrayAdapter<bean> ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lv);
sax();
ArrayAdapter<bean> ad=new ArrayAdapter<bean>(MainActivity.this, android.R.layout.simple_list_item_1, list);
lv.setAdapter(ad);
}
public void sax(){
// 1 get sax_spf
SAXParserFactory spf=SAXParserFactory.newInstance();
try {
// 2
SAXParser parser=spf.newSAXParser();
// 3 xmlreader and set listener
XMLReader reader=parser.getXMLReader();
reader.setContentHandler(handler);
reader.parse(new InputSource(getAssets().open("data1.xml")));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}