package com.example.saxparserxml13;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
//定义集合
private List<Book> list_book;
private ListView mListView;
private BookBaseAdapter adapter;
private OpenHelper mHelper;
private SQLiteDatabase sd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView=(ListView) findViewById(R.id.mylistview);
mHelper=new OpenHelper(getApplicationContext(), "saxparse.db", null, 1);
sd=mHelper.getReadableDatabase();
intodata();
//添加适配器
adapter=new BookBaseAdapter(this,list_book);
mListView.setAdapter(adapter);
// //定义actionbar
// ActionBar bar=getActionBar();
bar.setIcon(R.drawable.ic_launcher);
bar.setTitle("首页");
// bar.setDisplayShowHomeEnabled(false);
//
// //设置导航菜单为list列表模式
// bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// final ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,new String[]{"分类","添加","删除","修改"});
// bar.setListNavigationCallbacks(adapter, new OnNavigationListener() {
//
// @Override
// public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// if (adapter1.getItem(itemPosition).equals("增加")) {
// Toast.makeText(getApplicationContext(), "增加", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("删除")){
// Toast.makeText(getApplicationContext(), "删除", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("修改")){
// Toast.makeText(getApplicationContext(), "修改", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("分类")){
// Toast.makeText(getApplicationContext(), "分类", 1).show();
// }
// return true;
// }
// });
}
/**
* 定义解析方法
* 解析sd卡下的xml文件
*/
private void intodata() {
// TODO Auto-generated method stub
//或得sd的路径
File path=Environment.getExternalStorageDirectory();
//或得sd卡状态
String state=Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {//挂载状态
//获取SAXParserFactory对象
SAXParserFactory factory=SAXParserFactory.newInstance();
//或得SAXParser对象
try {
SAXParser parser=factory.newSAXParser();
//调用parser.parser解析xml文件
parser.parse(new File(path,"books.xml"),new BookHandler());
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//定义bookhandler
class BookHandler extends DefaultHandler{
private Book book;
//定义标识,标记当前解析的节点名称
private String tag;
//定义开始解析xml文件时
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
//实例化集合对象
list_book=new ArrayList<Book>();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
//定义开始 解析节点时额方法
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
//记录节点名称
tag=localName;
//判断当前节点名称
if (tag.equals("book")) {
//打印
Log.i("books", "id="+attributes.getValue("id"));
//实例化对象,将oxide值添加到 对象中
String id=attributes.getValue("id");
book=new Book();
book.setId(id);
}
}
//结束节点解析时的方法
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
//结束时,清空
tag="";
//判断节点名称是不是book,如果是将解析的文件添加到集合中
if (localName.equals("book")) {
list_book.add(book);
//添加到数据库中
// sd.execSQL("insert into book(id,name,price,type)values(null,?,?,?)", new Object[]{book.getName(),book.getPrice(),book.getType()});
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
//或得节点内容
if (tag.equals("name")) {
String name=new String(ch,start,length);
book.setName(name);
Log.i("books", "name="+name);
}else if (tag.equals("price")) {
String price=new String(ch,start,length);
book.setPrice(price);
Log.i("books", "price="+price);
}else if(tag.equals("type")){
String type=new String(ch,start,length);
book.setType(type);
Log.i("books", "type="+type);
}
}
}
}
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Parser;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
//定义集合
private List<Book> list_book;
private ListView mListView;
private BookBaseAdapter adapter;
private OpenHelper mHelper;
private SQLiteDatabase sd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView=(ListView) findViewById(R.id.mylistview);
mHelper=new OpenHelper(getApplicationContext(), "saxparse.db", null, 1);
sd=mHelper.getReadableDatabase();
intodata();
//添加适配器
adapter=new BookBaseAdapter(this,list_book);
mListView.setAdapter(adapter);
// //定义actionbar
// ActionBar bar=getActionBar();
bar.setIcon(R.drawable.ic_launcher);
bar.setTitle("首页");
// bar.setDisplayShowHomeEnabled(false);
//
// //设置导航菜单为list列表模式
// bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// final ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,new String[]{"分类","添加","删除","修改"});
// bar.setListNavigationCallbacks(adapter, new OnNavigationListener() {
//
// @Override
// public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// if (adapter1.getItem(itemPosition).equals("增加")) {
// Toast.makeText(getApplicationContext(), "增加", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("删除")){
// Toast.makeText(getApplicationContext(), "删除", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("修改")){
// Toast.makeText(getApplicationContext(), "修改", 1).show();
// }else if(adapter1.getItem(itemPosition).equals("分类")){
// Toast.makeText(getApplicationContext(), "分类", 1).show();
// }
// return true;
// }
// });
}
/**
* 定义解析方法
* 解析sd卡下的xml文件
*/
private void intodata() {
// TODO Auto-generated method stub
//或得sd的路径
File path=Environment.getExternalStorageDirectory();
//或得sd卡状态
String state=Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {//挂载状态
//获取SAXParserFactory对象
SAXParserFactory factory=SAXParserFactory.newInstance();
//或得SAXParser对象
try {
SAXParser parser=factory.newSAXParser();
//调用parser.parser解析xml文件
parser.parse(new File(path,"books.xml"),new BookHandler());
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//定义bookhandler
class BookHandler extends DefaultHandler{
private Book book;
//定义标识,标记当前解析的节点名称
private String tag;
//定义开始解析xml文件时
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
//实例化集合对象
list_book=new ArrayList<Book>();
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
//定义开始 解析节点时额方法
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
//记录节点名称
tag=localName;
//判断当前节点名称
if (tag.equals("book")) {
//打印
Log.i("books", "id="+attributes.getValue("id"));
//实例化对象,将oxide值添加到 对象中
String id=attributes.getValue("id");
book=new Book();
book.setId(id);
}
}
//结束节点解析时的方法
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
//结束时,清空
tag="";
//判断节点名称是不是book,如果是将解析的文件添加到集合中
if (localName.equals("book")) {
list_book.add(book);
//添加到数据库中
// sd.execSQL("insert into book(id,name,price,type)values(null,?,?,?)", new Object[]{book.getName(),book.getPrice(),book.getType()});
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
//或得节点内容
if (tag.equals("name")) {
String name=new String(ch,start,length);
book.setName(name);
Log.i("books", "name="+name);
}else if (tag.equals("price")) {
String price=new String(ch,start,length);
book.setPrice(price);
Log.i("books", "price="+price);
}else if(tag.equals("type")){
String type=new String(ch,start,length);
book.setType(type);
Log.i("books", "type="+type);
}
}
}
}