如何解析sd中的xml文件,并展示

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);
}

}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值