***************************************************************XML解析之DOM解析_四层结合数据库*********************************************************************
*******************************文件放在assets中*************************
**************************************************数据库的Bean**************************************************************
- public class Book {
- private String _id;
- private String name;
- private String author;
- private String price;
- public String get_id() {
- return _id;
- }
- public void set_id(String _id) {
- this._id = _id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public String getPrice() {
- return price;
- }
- public void setPrice(String price) {
- this.price = price;
- }
- public Book(String _id,String name,String author,String price) {
- super();
- this._id = _id;
- this.name = name;
- this.author = author;
- this.price = price;
- }
- public Book() {
- super();
- // TODO Auto-generated constructor stub
- }
- @Override
- public String toString() {
- return name + "\t\t"+ "\t\t"+ author+ "\t\t"
- + price + "\n";
- }
- public Book(String name,String price) {
- super();
- this.name = name;
- this.author = author;
- this.price = price;
- }
- }
- import java.util.ArrayList;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.NodeList;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.ContentValues;
- import android.database.sqlite.sqliteDatabase;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private View listbook;
- private ListView listView;
- private ArrayList<Book> list;
- private ArrayAdapter<Book> adapter;
- private MysqLite MysqLite;
- private sqliteDatabase db;
- private ContentValues values;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listbook = findViewById(R.id.listbook);
- listView = (ListView) findViewById(R.id.listView);
- list = new ArrayList<Book>();
- MysqLite = new MysqLite(this);
- db = MysqLite.getWritableDatabase();
- values = new ContentValues();
- adapter = new ArrayAdapter<Book>(MainActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1,list);
- listView.setAdapter(adapter);
- listbook.setOnClickListener(new OnClickListener() {
- private String price;
- private String name;
- private String author;
- @Override
- public void onClick(View v) {
- list.clear();//每次都清空数据
- try {
- //获取一个DocumentBuilder工厂
- DocumentBuilderFactory factory = DocumentBuilderFactory
- .newInstance();
- //通过DocumentBuilder工厂得到一个DocumentBuilder对象
- DocumentBuilder builder = factory.newDocumentBuilder();
- //getAssets方法获取资源文件,使用DocumentBuilder对象将资源文件流转换成Document对象
- Document document = builder.parse(getAssets().open(
- "books2.xml"));
- //使用document对象的getdocumentElement方法获取document第一层Element对象
- Element element = document.getDocumentElement();
- //通过element对象的getelementsByTagName获取该element子节点的nodeList
- NodeList china = element.getElementsByTagName("china");
- for (int i = 0; i < china.getLength(); i++) {
- Element china1 = (Element) china.item(i);
- NodeList list2 = element.getElementsByTagName("book");
- //遍历nodeList
- for (int j = 0; j < list2.getLength(); j++) {
- Element element2 = (Element) list2.item(j);
- // String id = element2.getAttribute("id");
- price = element2.getElementsByTagName("price")
- .item(0).getTextContent();
- name = element2.getElementsByTagName("name")
- .item(0).getFirstChild().getNodeValue();
- author = element2.getElementsByTagName("author")
- .item(0).getTextContent();
- //bookHe();
- }
- }
- NodeList foreiner = element.getElementsByTagName("foreiner");
- for (int i = 0; i < foreiner.getLength(); i++) {
- Element foreiner1 = (Element) foreiner.item(i);
- NodeList list2 = element.getElementsByTagName("book");
- //遍历nodeList
- for (int j = 0; j < list2.getLength(); j++) {
- Element element2 = (Element) list2.item(j);
- // String id = element2.getAttribute("id");
- price = element2.getElementsByTagName("price")
- .item(0).getTextContent();
- name = element2.getElementsByTagName("name")
- .item(0).getFirstChild().getNodeValue();
- author = element2.getElementsByTagName("author")
- .item(0).getTextContent();
- bookHe();
- values.put("name",name);//添加到数据库
- values.put("author",author);
- values.put("price",price);
- db.insert("book",null,values);
- Toast.makeText(MainActivity.this,"BOOK",0).show();
- }
- }
- Toast.makeText(MainActivity.this,"KING",0).show();
- adapter.notifyDataSetChanged();
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
- private void bookHe() {
- Book book = new Book(name,author,price);
- list.add(book);
- }
- });
- }
- }
**************************************************MysqLite.class****************************************************************
- import android.content.Context;
- import android.database.sqlite.sqliteDatabase;
- import android.database.sqlite.sqliteDatabase.CursorFactory;
- import android.database.sqlite.sqliteOpenHelper;
- public class MysqLite extends sqliteOpenHelper {
- public MysqLite(Context context) {
- super(context,"k.db",1);
- // TODO Auto-generated constructor stub
- }
- @Override
- public void onCreate(sqliteDatabase db) {
- // TODO Auto-generated method stub
- db.execsql("create table book(_id integer primary key autoincrement,name varchar(0),author varchar(0),price varchar(0))");
- }
- @Override
- public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
- // TODO Auto-generated method stub
- }
- }