I'm trying to learn more about reading/writing to an XML-file (as a kind of database) in Android. I can't seem to find anything about this so I guess I don't know what terms to look for.
My goal is to write usernames and passwords from two editText-fields into the file, then read them (and hopefully succeed validating them) later on when I am going to make a login function for my app.
The file I wish to read/write to is located on a server, so this makes it a bit complex for me.
If someone could help me find a tutorial about reading/writing to XML-files I would be very happy.
Thank you.
The java.io package offers openFileOutput() method which returns the instance of FileOutputStream class to write the file in external storage of the device. To acquire a directory that's used by only your app by calling getExternalFilesDir(). To write the data into the file call the FileOutputStream . write() method.
Here is the code to write to XML file:
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();
}
and to read data from XML File the do as below:
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With