Leer / escribir en un archivo XML externo en Android

Estoy tratando de aprender más acerca de la lectura / escritura en un archivo XML (como un tipo de base de datos) en Android. Parece que no puedo encontrar nada sobre esto, así que supongo que no sé qué términos buscar.

Mi objetivo es escribir nombres de usuario y contraseñas de dos campos editText en el archivo, luego leerlos (y espero tener éxito en validarlos) más adelante cuando voy a hacer una función de inicio de sesión para mi aplicación.

El archivo que deseo leer / escribir está situado en un servidor, así que esto lo hace un poco complejo para mí.

Si alguien pudiera ayudarme a encontrar un tutorial sobre lectura / escritura en archivos XML, estaría muy contento.

Gracias.

Aquí está el código para escribir en el archivo XML:

final String xmlFile = "userData"; String userNAme = "username"; String password = "password"; try { FileOutputStream fos = new FileOutputStream("userData.xml"); FileOutputStream fileos= getApplicationContext().openFileOutput(xmlFile, Context.MODE_PRIVATE); XmlSerializer xmlSerializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); xmlSerializer.setOutput(writer); xmlSerializer.startDocument("UTF-8", true); xmlSerializer.startTag(null, "userData"); xmlSerializer.startTag(null, "userName"); xmlSerializer.text(username_String_Here); xmlSerializer.endTag(null, "userName"); xmlSerializer.startTag(null,"password"); xmlSerializer.text(password_String); xmlSerializer.endTag(null, "password"); xmlSerializer.endTag(null, "userData"); xmlSerializer.endDocument(); xmlSerializer.flush(); String dataWrite = writer.toString(); fileos.write(dataWrite.getBytes()); fileos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Y para leer los datos del archivo XML, haga lo siguiente:

 final String xmlFile = "userData"; ArrayList<String> userData = new ArrayList<String>(); try { fis = getApplicationContext().openFileInput(xmlFile); isr = new InputStreamReader(fis); inputBuffer = new char[fis.available()]; isr.read(inputBuffer); data = new String(inputBuffer); isr.close(); fis.close(); } catch (FileNotFoundException e3) { // TODO Auto-generated catch block e3.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } XmlPullParserFactory factory = null; try { factory = XmlPullParserFactory.newInstance(); } catch (XmlPullParserException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } factory.setNamespaceAware(true); XmlPullParser xpp = null; try { xpp = factory.newPullParser(); } catch (XmlPullParserException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } try { xpp.setInput(new StringReader(data)); } catch (XmlPullParserException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } int eventType = 0; try { eventType = xpp.getEventType(); } catch (XmlPullParserException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } while (eventType != XmlPullParser.END_DOCUMENT){ if (eventType == XmlPullParser.START_DOCUMENT) { System.out.println("Start document"); } else if (eventType == XmlPullParser.START_TAG) { System.out.println("Start tag "+xpp.getName()); } else if (eventType == XmlPullParser.END_TAG) { System.out.println("End tag "+xpp.getName()); } else if(eventType == XmlPullParser.TEXT) { userData.add(xpp.getText()); } try { eventType = xpp.next(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } String userName = userData.get(0); String password = userData.get(1); 

Para crear un nuevo archivo en / storage / sdcard0 / your_app_name / use lo siguiente:

 File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "your_app_name" + "/" + xmlFile); file.createNewFile(); FileOutputStream fileos = new FileOutputStream(file); 

Public class SkillsParser implementa AssyncXmlReader {

 private String ns = ""; @Override public Object parse(InputStream in) throws XmlPullParserException, IOException { try { XmlPullParser parser = Xml.newPullParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(in, null); parser.nextTag(); return readSkills(parser); } finally { in.close(); } } private Object readSkills(XmlPullParser parser) throws XmlPullParserException, IOException { parser.require(XmlPullParser.START_TAG, ns, "skills"); List<ESkill> skills = new ArrayList<ESkill>(); while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) { continue; } String name = parser.getName(); // Starts by looking for the entry tag if (name.equals("skill")) { skills.add(readSkill(parser)); } else { skip(parser); } } return skills; } private ESkill readSkill(XmlPullParser parser) throws XmlPullParserException, IOException { /* <skill> <name>Software Engineering</name> </skill> */ String skill_name = ""; while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) { continue; } String name = parser.getName(); if ("name".equals(name)) { skill_name = readName(parser); } else { skip(parser); } } return new ESkill().setSkill(skill_name); } // Processes title tags in the feed. private String readName(XmlPullParser parser) throws IOException, XmlPullParserException { parser.require(XmlPullParser.START_TAG, ns, "name"); String description = readText(parser); parser.require(XmlPullParser.END_TAG, ns, "name"); return description; } // For the tags title and summary, extracts their text values. private String readText(XmlPullParser parser) throws IOException, XmlPullParserException { String result = ""; if (parser.next() == XmlPullParser.TEXT) { result = parser.getText(); parser.nextTag(); } return result; } private void skip(XmlPullParser parser) throws XmlPullParserException, IOException { if (parser.getEventType() != XmlPullParser.START_TAG) { throw new IllegalStateException(); } int depth = 1; while (depth != 0) { switch (parser.next()) { case XmlPullParser.END_TAG: depth--; break; case XmlPullParser.START_TAG: depth++; break; } } } 

}

  • Error al inflar XML en el fragmento Google maps
  • ¿Cómo crear el retraso de 1 segundo antes de establecer el alfa de Ver?
  • Interruptor de Android - cambia el fondo del interruptor en encendido / apagado
  • Android: html en strings.xml
  • Intentando crear una solicitud SOAP correcta
  • FloatingActionButton con icono animado
  • Cómo envolver el fragmento GoogleMap en un LinearLayout?
  • PreferenceScreen - <intention ... /> - Excepción - FLAG_ACTIVITY_NEW_TASK
  • Aplicación de Android que no se conecta a Wifi, pero funciona bien en 3G compartida a través de Wifi
  • Eliminar icono / logotipo de la barra de acción de android
  • ¿Buenas herramientas para desarrollar una GUI en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.