2012-02-27 15 views
10

chcę czytać plik xml, który wygląda tak jak poniżej ... mam zapisana w folderze aktywów zJak odczytać plik XML w 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> 

Jak mogę dostać te wartości?

+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 –

Odpowiedz

5

Spróbuj najpierw:

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

Istnieje kilka sposobów na odczytanie pliku XML w systemie Android. Moją pierwszą opcją jest DocumentBuilder, ponieważ nie tworzę ograniczenia wersji API (jest dostępne od poziomu API 1).

Przykładem jednego z moich projektów:

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

Jak odczytać plik i przejść do wartości dokumentu po tym, jak jego dość podstawowe, to właśnie Google.

+0

dzięki za pomoc – user1169079

2

Na początek użyj parsera DOM. Od tego znacznie mniejszego kodu i łatwe do naśladowania. Analizator składni SAX to po prostu za dużo kodu, na początek. Ludzie będą argumentować, że SAX jest szybszy, tak jest, ale DOM jest łatwiejszy, mniejszy kod i mniejsze błędy.

Jeśli musisz przejść do SAX, najpierw zmierz czas odpowiedzi podczas korzystania z DOM i tylko wtedy, gdy parsowanie powoduje największy ból, a następnie przejdź do SAX. W przeciwnym razie DOM wykonuje cudowną pracę.

-1

Spróbuj na Xamarin.Android (Cross Platform)

trzeba zapisać plik XML w folderze Assets z wbudowanym działania "AndroidAsset".

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

Fragment kodu można odczytać pliku xml

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

klasa XmlDocument implementuje rdzeń XML Document Object modelu (DOM) parser dla .NET Framework.