2012-02-27 35 views
10

quiero leer archivo XML que se parece a la siguiente ... he almacenado en la carpeta activos conCómo leer el archivo XML en Android

<ImageList SpriteSheetName="hh_gmw01"> 
    <Image Name="gmw01"  x="0" y="0" width="1047" height="752"/> 
    <Image Name="hht1l01" x="388" y="269" width="34" height="36"/> 
    <Image Name="hht1l02" x="147" y="99" width="85" height="33"/> 
</ImageList> 

¿Cómo consigo estos valores?

+0

http://www.google.co.in/#hl=en&output=search&sclient=psy-ab&q=java+read+xml+file&pbx=1&oq=java+read+xml+file&aq=f&aqi=&aql=&gs_sm= 3 & gs_upl = 999l5493l0l5744l18l14l0l0l0l0l0l0ll0l0 & bav = on.2, or.r_gc.r_pw.r_cp.r_qf., Cf.osb & fp = f56754703660b899 & biw = 1353 & bih = 1070 –

Respuesta

5

Trate de hacer esto primero:

import java.io.IOException; 
import java.io.InputStream; 

import android.app.Activity; 
import android.content.res.AssetManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class Main extends Activity { 

Button btn; 
TextView tvXml; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button btn = (Button) findViewById(R.id.button1); 

    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // Load XML for parsing. 
      AssetManager assetManager = getAssets(); 
      InputStream inputStream = null; 
      try { 
       inputStream = assetManager.open("textxml.xml"); 
      } catch (IOException e) { 
       Log.e("tag", e.getMessage()); 
      } 

      String s = readTextFile(inputStream); 
      TextView tv = (TextView)findViewById(R.id.textView1); 
      tv.setText(s); 
     } 
    }); 
} 


private String readTextFile(InputStream inputStream) { 
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 

    byte buf[] = new byte[1024]; 
    int len; 
    try { 
     while ((len = inputStream.read(buf)) != -1) { 
      outputStream.write(buf, 0, len); 
     } 
     outputStream.close(); 
     inputStream.close(); 
    } catch (IOException e) { 

    } 
    return outputStream.toString(); 
} 
} 
2

Hay varias maneras de leer un XML en Android. Mi primera opción es DocumentBuilder ya que no creo una restricción de versión de API (está disponible desde el Nivel 1 de la API).

Un ejemplo de uno de mis proyectos:

public Document parseXML(InputSource source) { 
    try { 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     dbf.setNamespaceAware(false); 
     dbf.setValidating(false); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     return db.parse(source); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

¿Cómo se lee el archivo y acceder a los valores de documentos después de esto, bueno, es bastante básico, al igual que Google.

+0

gracias por la ayuda – user1169079

2

Para comenzar, use el analizador DOM. Dado que su código es mucho menor, y fácil de seguir. El analizador SAX es demasiado código para empezar. La gente argumentará que SAX es más rápido, sí, pero DOM es más fácil, menos código y menos errores.

Si debe mudarse a SAX, primero mida sus tiempos de respuesta cuando usa DOM, y solo si el análisis le está causando más dolor, luego pase a SAX. O bien DOM hace un trabajo maravilloso.

-1

probar esto por Xamarin.Android (multiplataforma)

necesita almacenar el archivo XML en la carpeta de activos con acción de acumulación "AndroidAsset".

using System; 
using System.Xml; 
using System.IO; 

fragmento de código para leer el archivo xml

XmlDocument xDoc = new XmlDocument(); 
Stream xmlStream = Assets.Open("textxml.xml"); 
xDoc.Load(xmlStream); 

clase XmlDocument implementa el analizador núcleo XML Document Object Model (DOM) para .NET Framework.