package net.sgoliver.android.xml;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.XmlResourceParser;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btnEscribirXml = null;
private Button btnEscribirXmlPull = null;
private Button btnLeerXmlDesdeMem = null;
private Button btnLeerXmlDesdeXml = null;
private Button btnLeerXmlDesdeRaw = null;
private Button btnLeerXmlDesdeAssets = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnEscribirXml = (Button)findViewById(R.id.btnEscribirXml);
btnEscribirXmlPull = (Button)findViewById(R.id.btnEscribirXmlPull);
btnLeerXmlDesdeMem = (Button)findViewById(R.id.btnLeerDesdeMemoria);
btnLeerXmlDesdeXml = (Button)findViewById(R.id.btnLeerDesdeXml);
btnLeerXmlDesdeRaw = (Button)findViewById(R.id.btnLeerDesdeRaw);
btnLeerXmlDesdeAssets = (Button)findViewById(R.id.btnLeerDesdeAssets);
btnEscribirXml.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
try
{
//Creamos un fichero en la memoria interna
OutputStreamWriter fout =
new OutputStreamWriter(
openFileOutput("prueba.xml", Context.MODE_PRIVATE));
StringBuilder sb = new StringBuilder();
//Construimos el XML
sb.append("<usuario>");
sb.append("<nombre>" + "Usuario1" + "</nombre>");
sb.append("<apellidos>" + "ApellidosUsuario1" + "</apellidos>");
sb.append("</usuario>");
//Escribimos el resultado a un fichero
fout.write(sb.toString());
fout.close();
Log.i("XmlTips", "Fichero XML creado correctamente.");
}
catch (Exception ex)
{
Log.e("XmlTips", "Error al escribir fichero XML.");
}
}
});
btnEscribirXmlPull.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
try {
//Creamos el serializer
XmlSerializer ser = Xml.newSerializer();
//Creamos un fichero en memoria interna
OutputStreamWriter fout =
new OutputStreamWriter(
openFileOutput("prueba_pull.xml",
Context.MODE_PRIVATE));
//Asignamos el resultado del serializer al fichero
ser.setOutput(fout);
//Construimos el XML
ser.startTag("", "usuario");
ser.startTag("", "nombre");
ser.text("Usuario1");
ser.endTag("", "nombre");
ser.startTag("", "apellidos");
ser.text("ApellidosUsuario1");
ser.endTag("", "apellidos");
ser.endTag("", "usuario");
ser.endDocument();
fout.close();
Log.i("XmlTips", "Fichero XML creado correctamente.");
}
catch (Exception e)
{
Log.e("XmlTips", "Error al escribir fichero XML.");
}
}
});
btnLeerXmlDesdeMem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
try
{
FileInputStream fil = openFileInput("prueba.xml");
//DOM (Por ejemplo)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(fil);
//A partir de aqu� se tratar�a el �rbol DOM como siempre.
//Por ejemplo:
Element root = dom.getDocumentElement();
//...
Log.i("XmlTips", "Fichero XML leido correctamente.");
}
catch (Exception ex)
{
Log.e("XmlTips", "Error al leer fichero XML.");
}
}
});
btnLeerXmlDesdeXml.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
try
{
XmlResourceParser xrp = getResources().getXml(R.xml.prueba);
//A partir de aqu� utilizamos la variable 'xrp' como
//cualquier otro parser de tipo XmlPullParser. Por ejemplo:
int evento = xrp.getEventType();
if(evento == XmlPullParser.START_DOCUMENT)
Log.i("XmlTips", "Inicio del documento");
//...
Log.i("XmlTips", "Fichero XML leido correctamente.");
}
catch (Exception ex)
{
Log.e("XmlTips", "Error al leer fichero XML.");
}
}
});
btnLeerXmlDesdeRaw.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
try
{
InputStream is = getResources().openRawResource(R.raw.prueba);
//DOM (Por ejemplo)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(is);
//A partir de aqu� se tratar�a el �rbol DOM como siempre.
//Por ejemplo:
Element root = dom.getDocumentElement();
//...
Log.i("XmlTips", "Fichero XML leido correctamente.");
}
catch (Exception ex)
{
Log.e("XmlTips", "Error al leer fichero XML.");
}
}
});
btnLeerXmlDesdeAssets.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
try {
AssetManager assetMan = getAssets();
InputStream is = assetMan.open("prueba_asset.xml");
//DOM (Por ejemplo)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(is);
//A partir de aqu� se tratar�a el �rbol DOM como siempre.
//Por ejemplo:
Element root = dom.getDocumentElement();
//...
Log.i("XmlTips", "Fichero XML leido correctamente.");
}
catch(Exception ex)
{
Log.e("XmlTips", "Error al leer fichero XML.");
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}