Как читать XML-файл в android
Я хочу прочитать XML-файл, который выглядит следующим образом ... Я сохранил его в папке assets с
<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>
Как получить эти значения?
5 ответов
сначала попробуйте это:
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();
}
}
существует несколько способов чтения XML в Android. Мой первый вариант DocumentBuilder поскольку не создавайте ограничение версии API (доступно с уровня API 1).
пример из одного из моих проектов:
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;
}
}
Как Вы читаете файл и получаете доступ к значениям документа после этого, ну, его довольно простой, просто Google.
для начала используйте парсер DOM. С его гораздо меньшим кодом, и легко следовать. SAX parser-это слишком много кода для начала. Люди будут утверждать, что SAX быстрее, да, но DOM проще, меньше кода и меньше ошибок.
Если вы должны перейти к SAX, сначала измерьте время отклика при использовании DOM, и только если разбор вызывает у вас наибольшую боль, затем перейдите к SAX. Или дом отлично справляется.
лично я бы не рекомендовал парсер DOM, попробуйте это вместо этого, простые аннотации могут помочь вам с помощью простого парсера xml
http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html
попробуйте это для Xamarin.Android (Кросс-Платформа)
вам нужно сохранить xml-файл в папку Assets с действием сборки "AndroidAsset".
using System;
using System.Xml;
using System.IO;
фрагмент кода для чтения XML-файла
XmlDocument xDoc = new XmlDocument();
Stream xmlStream = Assets.Open("textxml.xml");
xDoc.Load(xmlStream);
класс XmlDocument реализует основной синтаксический анализатор объектной модели XML-документа (DOM) для .NET Framework.