Salvar dados no banco e gerar xml dinamico - Java Android

Bom dia pessoal,

Estou desenvolvendo um sistema em android que além de inserir os dados no banco sqlite ele também precisa gerar um arquivo xml desta inserção.

A inserção eu consegui fazer com sucesso. A minha dúvida é como gerar este arquivo xml com os dados que inseri na tabela do banco.

Alguém teria alguma ideia ou exemplo para me ajudar?

Deste já agradeço pessoal.

Estou seguindo o exemplo de inserção do livro google android para estudar esta parte.

Seguem as classes de inserção.

Classe RepositorioCarro


package br.livro.android.cap14.banco;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.util.Log;
import br.livro.android.cap14.banco.Carro.Carros;


public class RepositorioCarro {
	private static final String CATEGORIA = "livro";

	// Nome do banco
	private static final String NOME_BANCO = "livro_android";
	// Nome da tabela
	public static final String NOME_TABELA = "carro";

	protected SQLiteDatabase db;

	public RepositorioCarro(Context ctx) {
		// Abre o banco de dados já existente
		db = ctx.openOrCreateDatabase(NOME_BANCO, Context.MODE_PRIVATE, null);
	}

	protected RepositorioCarro() {
		// Apenas para criar uma subclasse...
	}

	// Salva o carro, insere um novo ou atualiza
	public long salvar(Carro carro) {
		long id = carro.id;

		if (id != 0) {
			atualizar(carro);
		} else {
			// Insere novo
			id = inserir(carro);
		}

		return id;
	}

	// Insere um novo carro
	public long inserir(Carro carro) {
		ContentValues values = new ContentValues();
		values.put(Carros.NOME, carro.nome);
		values.put(Carros.PLACA, carro.placa);
		values.put(Carros.ANO, carro.ano);

		long id = inserir(values);
		return id;
	}

	// Insere um novo carro
	public long inserir(ContentValues valores) {
		long id = db.insert(NOME_TABELA, "", valores);
		return id;
	}

	// Atualiza o carro no banco. O id do carro é utilizado.
	public int atualizar(Carro carro) {
		ContentValues values = new ContentValues();
		values.put(Carros.NOME, carro.nome);
		values.put(Carros.PLACA, carro.placa);
		values.put(Carros.ANO, carro.ano);

		String _id = String.valueOf(carro.id);

		String where = Carros._ID + "=?";
		String[] whereArgs = new String[] { _id };

		int count = atualizar(values, where, whereArgs);

		return count;
	}

	// Atualiza o carro com os valores abaixo
	// A cláusula where é utilizada para identificar o carro a ser atualizado
	public int atualizar(ContentValues valores, String where, String[] whereArgs) {
		int count = db.update(NOME_TABELA, valores, where, whereArgs);
		Log.i(CATEGORIA, "Atualizou [" + count + "] registros");
		return count;
	}

	// Deleta o carro com o id fornecido
	public int deletar(long id) {
		String where = Carros._ID + "=?";

		String _id = String.valueOf(id);
		String[] whereArgs = new String[] { _id };

		int count = deletar(where, whereArgs);

		return count;
	}

	// Deleta o carro com os argumentos fornecidos
	public int deletar(String where, String[] whereArgs) {
		int count = db.delete(NOME_TABELA, where, whereArgs);
		Log.i(CATEGORIA, "Deletou [" + count + "] registros");
		return count;
	}

	// Busca o carro pelo id
	public Carro buscarCarro(long id) {
		// select * from carro where _id=?
		Cursor c = db.query(true, NOME_TABELA, Carro.colunas, Carros._ID + "=" + id, null, null, null, null, null);

		if (c.getCount() > 0) {

			// Posicinoa no primeiro elemento do cursor
			c.moveToFirst();

			Carro carro = new Carro();

			// Lê os dados
			carro.id = c.getLong(0);
			carro.nome = c.getString(1);
			carro.placa = c.getString(2);
			carro.ano = c.getInt(3);

			return carro;
		}

		return null;
	}

	// Retorna um cursor com todos os carros
	public Cursor getCursor() {
		try {
			// select * from carros
			//return db.query(NOME_TABELA, Carro.colunas, null, null, null, null, null, null);
			
			return db.query(NOME_TABELA, Carro.colunas, null, null, null, null, null, null);
		} catch (SQLException e) {
			Log.e(CATEGORIA, "Erro ao buscar dados: " + e.toString());
			return null;
			
			//cursor.getLong(cursor.getColumnIndex
		}
	}

	// Retorna uma lista com todos os carros
	public List<Carro> listarCarros() {
		Cursor c = getCursor();

		List<Carro> carros = new ArrayList<Carro>();

		if (c.moveToFirst()) {

			// Recupera os índices das colunas
			int idxId = c.getColumnIndex(Carros._ID);
			int idxNome = c.getColumnIndex(Carros.NOME);
			int idxPlaca = c.getColumnIndex(Carros.PLACA);
			int idxAno = c.getColumnIndex(Carros.ANO);

			// Loop até o final
			do {
				Carro carro = new Carro();
				carros.add(carro);

				// recupera os atributos de carro
				carro.id = c.getLong(idxId);
				carro.nome = c.getString(idxNome);
				carro.placa = c.getString(idxPlaca);
				carro.ano = c.getInt(idxAno);

			} while (c.moveToNext());
		}

		return carros;
	}

	// Busca o carro pelo nome "select * from carro where nome=?"
	public Carro buscarCarroPorNome(String nome) {
		Carro carro = null;

		try {
			// Idem a: SELECT _id,nome,placa,ano from CARRO where nome = ?
			Cursor c = db.query(NOME_TABELA, Carro.colunas, Carros.NOME + "='" + nome + "'", null, null, null, null);

			// Se encontrou...
			if (c.moveToNext()) {

				carro = new Carro();

				// utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores
				carro.id = c.getLong(0);
				carro.nome = c.getString(1);
				carro.placa = c.getString(2);
				carro.ano = c.getInt(3);
			}
		} catch (SQLException e) {
			Log.e(CATEGORIA, "Erro ao buscar o carro pelo nome: " + e.toString());
			return null;
		}

		return carro;
	}

	// Busca um carro utilizando as configurações definidas no
	// SQLiteQueryBuilder
	// Utilizado pelo Content Provider de carro
	public Cursor query(SQLiteQueryBuilder queryBuilder, String[] projection, String selection, String[] selectionArgs,
			String groupBy, String having, String orderBy) {
		Cursor c = queryBuilder.query(this.db, projection, selection, selectionArgs, groupBy, having, orderBy);
		return c;
	}

	// Fecha o banco
	public void fechar() {
		// fecha o banco de dados
		if (db != null) {
			db.close();
		}
	}
}

Classe CadastroCarros



package br.livro.android.cap14.banco;

import java.util.List;

import br.livro.android.cap14.banco.Carro.Carros;


import android.app.ListActivity;

import android.content.Intent;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.ListView;

public class CadastroCarros extends ListActivity {
    
	
	
	
	protected static final int INSERIR_EDITAR = 1;
	protected static final int BUSCAR = 2;
	//public static RepositorioCarro repositorio;
	public static RepositorioCarrosScript repositorio;
	private List<Carro> carros;
		
    @Override
    public void onCreate(Bundle icicle) {
        
    	super.onCreate(icicle);
        
        //repositorio = new RepositorioCarro(this);
    	repositorio = new RepositorioCarrosScript(this);
        
        atualizarLista();
       
    }

	protected void atualizarLista() {
		
		carros = repositorio.listarCarros();
		
		setListAdapter(new CarroListAdapter(this, carros));
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu){
	
		super.onCreateOptionsMenu(menu);
		
		menu.add(0,INSERIR_EDITAR,0,"Inserir Novo").setIcon(R.drawable.novo);
		menu.add(0, BUSCAR,0, "Buscar").setIcon(R.drawable.pesquisar);
		
		
		return true;
	
		
	}
	
	
	@Override
	
	public boolean onMenuItemSelected(int featureId, MenuItem item){
		
		switch (item.getItemId()) {
		
		case INSERIR_EDITAR:
			// abre a tela de cadastro    
			startActivityForResult(new Intent(this, EditarCarro.class), INSERIR_EDITAR);
			
			
		break;

		case BUSCAR:
			// abre a tela para buscar 
			startActivity(new Intent(this, BuscarCarro.class));			
		break;
		
		default:
			
		//	finish();
			break;
		}
		
		
		
		return true;
			
	}
	
	@Override
	protected void onListItemClick(ListView l, View v, int posicao, long id){
		
		super.onListItemClick(l, v, posicao, id);
		
		editarCarro(posicao);
			
		
	}

	protected void editarCarro(int posicao) {
		
		Carro carro = carros.get(posicao);
		
		
		// abre a tela para edicao
		
		Intent it = new Intent(this, EditarCarro.class);
		
		// passa o id do carro como parametro
		
		
		it.putExtra(Carros._ID, carro.id);
		
		// abre a a tela de edicao
		
		startActivityForResult(it, INSERIR_EDITAR);
	
	
	}
	
	
	@Override
	protected void onActivityResult(int codigo, int codigoRetorno, Intent it){
		
		super.onActivityResult(codigo, codigoRetorno, it);
				
		// quando a actitity editarcarro retornar, seja se foi para adicionar, atualizar ou excluir
		
		if(codigoRetorno == RESULT_OK){
			
			atualizarLista();
			
		}
	
		
	}
	
	
	public void onDestroy(){
		
		super.onDestroy();
		
		
		// fecha o banco
		
		repositorio.fechar();
		
	}
	
	

	
}