1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
public List<freeman.objects.Rules> parseRules(String url) throws MalformedURLException, IOException, NullPointerException, XmlPullParserException{
List<freeman.objects.Rules> listeRules = null;
XmlPullParser parser = Xml.newPullParser();
InputStream inputStream = getInputStream(url);
parser.setInput(inputStream, null);
int eventType = parser.getEventType();
try{
boolean done = false;
// La regle courrante du flux XML
freeman.objects.Rules currentRule = null;
// Tant que le parseur n'arrive pas a la fin du document
while (eventType != XmlPullParser.END_DOCUMENT && !done){
String name = null;
switch (eventType){
// Dans le cas ou l'on commence le document XML
case XmlPullParser.START_DOCUMENT:
listeRules = new ArrayList<freeman.objects.Rules>();
break;
// Dans le cas où l'on commence une balise
case XmlPullParser.START_TAG:
name = parser.getName();
// Debut d'une regle
if (name.equalsIgnoreCase(RULE)){
currentRule = new freeman.objects.Rules();
}else if(currentRule != null){
if(name.equalsIgnoreCase(ID)){
currentRule.setId(Integer.parseInt(parser.nextText()));
}else if(name.equalsIgnoreCase(NAME)){
currentRule.setName(parser.nextText());
}else if(name.equalsIgnoreCase(DESCRIPTION)){
currentRule.setDescription(parser.nextText());
}
}
break;
// Dans le cas ou l'on termine une regle
case XmlPullParser.END_TAG:
name = parser.getName();
if (name.equalsIgnoreCase(RULE) && currentRule != null){
// Ajout de la regle a la liste
listeRules.add(currentRule);
}else if (name.equalsIgnoreCase(RULE)){
done = true;
}
break;
}
eventType = parser.next();
}
} catch(NullPointerException e) {
Log.e("NullPointerException dans parseRules()", "Erreur au parsage du flux XML", e);
throw e;
} catch(MalformedURLException e) {
Log.e("MalformedURLException dans parseRules()", "Fichier XML mal formé", e);
throw e;
} catch(IOException e) {
Log.e("IOException dans parseRules()", "Erreur lecture du flux XML", e);
throw e;
} catch (Exception e) {
Log.e("Exception dans parseRules()", "", e);
} finally {
if (inputStream != null){
try {
inputStream.close();
}catch(Exception ex){
Log.e("XMLParser","Failed to close stream",ex);
}
}
}
return listeRules;
} |
Partager