Skip to content

Instantly share code, notes, and snippets.

@Swimburger
Last active June 16, 2016 06:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Swimburger/8b2556123a541627cbed to your computer and use it in GitHub Desktop.
Save Swimburger/8b2556123a541627cbed to your computer and use it in GitHub Desktop.
Parsing xml example
package be.howest.nmct.studentenhuizen.data;
import android.util.Xml;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Niels on 7/05/2014.
* based on
* http://developer.android.com/training/basics/network-ops/xml.html
*/
public class StudentenHuisService {
private static StudentenHuisService instance;
private static final String DATAURL="http://data.drk.be/kortrijk/studentenhuizen.xml";
public static StudentenHuisService getInstance(){
if(instance==null)
{
instance=new StudentenHuisService();
}
return instance;
}
private List<StudentenHuis> studentenHuizen;
private StudentenHuisService()
{
}
public List<StudentenHuis> getStudentenHuizen(){
if(studentenHuizen==null)
{
try {
FetchHuizen(DATAURL);
} catch (Exception e) {
e.printStackTrace();
}
}
return studentenHuizen;
}
private void FetchHuizen(String url) throws XmlPullParserException, IOException {
InputStream in = new URL(url).openStream();
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in, null);
parser.nextTag();
studentenHuizen= readXMLHuizen(parser);
} finally {
in.close();
}
}
private List<StudentenHuis> readXMLHuizen(XmlPullParser parser) throws IOException, XmlPullParserException {
List<StudentenHuis> huizen=new ArrayList<StudentenHuis>();
while(parser.next()!=XmlPullParser.END_TAG)
{
if(parser.getEventType()!=XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if(name.equals("studentenhuizen"))
{
huizen.add(readXMLHuis(parser));
}else{
skip(parser);
}
}
return huizen;
}
private StudentenHuis readXMLHuis(XmlPullParser parser) throws IOException, XmlPullParserException {
StudentenHuis huis = new StudentenHuis();
while(parser.next()!=XmlPullParser.END_TAG)
{
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("adres")) {
huis.setAdres(readText(parser));
} else if (name.equals("huisnr")) {
huis.setHuisnr(readText(parser));
} else if (name.equals("bisnr.")) {
huis.setBisnr(readText(parser));
} else if (name.equals("busnr.")) {
huis.setBusnr(readText(parser));
} else if (name.equals("gemeente")) {
huis.setGemeente(readText(parser));
} else if (name.equals("aantal_kamers")) {
String text = readText(parser);
if(text!=null)
huis.setAantal_kamers(Integer.parseInt(text));
} else if (name.equals("kad.afd")) {
huis.setKad_afd(readText(parser));
} else if (name.equals("kad.sectie")) {
huis.setKad_sectie(readText(parser));
} else if (name.equals("kad.nr.")) {
huis.setKad_nr(readText(parser));
}else {
skip(parser);
}
}
return huis;
}
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;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment