2014-01-30 2 views
0

im очень запутался в XML-анализе на Android. Я попытался разобрать эту XML-ссылку/файл: [http://93.186.202.34/vertretungsplan.php?api=10d]. Я пробовал разные учебные пособия и примеры, но пример xml структурирован по-разному, и я очень смущен этим. Я просто хочу отображать данные в текстовом виде или что-то без дополнительных окон элементов. Может кто-нибудь дать мне представление, как решить этот или, может быть, небольшой пример с моей ссылкой? Это было бы очень приятно. : D(HELP) Анализ данных XML на Android

ответ

0

Здесь вы идете ...

public class Vertretungsplan { 

public Datum datum; 
public List<Eintrag> eintragList; 
} 


public class Datum { 

public String stand; 
public String fuer; 
public String woche; 
} 


public class Eintrag { 

public String klassen; 
public String block; 
public String vertreter; 
public String fach; 
public String raum; 
public String fach_orig; 
public String lehrer_orig; 
public String selbststaendiges_arbeiten; 
public String entfall; 
public String text; 
} 


public class SaxHandler extends DefaultHandler { 

private Vertretungsplan vertretungsplan; 
private List<Eintrag> eintragList; 
private Eintrag tempEintrag; 
private Datum datum; 
private String tempVal; 

public SaxHandler() { 
    vertretungsplan = new Vertretungsplan(); 
} 

public Vertretungsplan getVertretungsplan() { 
    return vertretungsplan; 
} 

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
    tempVal = ""; 

    if (qName.equalsIgnoreCase("datum")) { 
     datum = new Datum(); 
    } 

    if (qName.equalsIgnoreCase("eintraege")) { 
     eintragList = new ArrayList<Eintrag>(); 
    } 

    if (qName.equalsIgnoreCase("eintrag")) { 
     tempEintrag = new Eintrag(); 
    } 
} 

public void characters(char[] ch, int start, int length) throws SAXException { 
    tempVal = new String(ch, start, length); 
} 

public void endElement(String uri, String localName, String qName) throws SAXException { 

    if (qName.equalsIgnoreCase("datum")) { 
     vertretungsplan.datum = datum; 
    } else if (qName.equalsIgnoreCase("stand")) { 
     datum.stand = tempVal; 
    } else if (qName.equalsIgnoreCase("fuer")) { 
     datum.fuer = tempVal; 
    } else if (qName.equalsIgnoreCase("woche")) { 
     datum.woche = tempVal; 
    } 

    if (qName.equalsIgnoreCase("eintrag")) { 
     eintragList.add(tempEintrag); 
    } else if (qName.equalsIgnoreCase("klassen")) { 
     tempEintrag.klassen = tempVal; 
    } else if (qName.equalsIgnoreCase("block")) { 
     tempEintrag.block = tempVal; 
    } else if (qName.equalsIgnoreCase("vertreter")) { 
     tempEintrag.vertreter = tempVal; 
    } else if (qName.equalsIgnoreCase("fach")) { 
     tempEintrag.fach = tempVal; 
    } else if (qName.equalsIgnoreCase("raum")) { 
     tempEintrag.raum = tempVal; 
    } else if (qName.equalsIgnoreCase("fach-orig")) { 
     tempEintrag.fach_orig = tempVal; 
    } else if (qName.equalsIgnoreCase("lehrer-orig")) { 
     tempEintrag.lehrer_orig = tempVal; 
    } else if (qName.equalsIgnoreCase("selbststaendiges-arbeiten")) { 
     tempEintrag.selbststaendiges_arbeiten = tempVal; 
    } else if (qName.equalsIgnoreCase("entfall")) { 
     tempEintrag.entfall = tempVal; 
    } else if (qName.equalsIgnoreCase("text")) { 
     tempEintrag.text = tempVal; 
    } 

    if (qName.equalsIgnoreCase("eintraege")) { 
     vertretungsplan.eintragList = eintragList; 
    } 
} 
} 


public class SaxParser { 
public static Vertretungsplan parse(InputStream is) { 
    Vertretungsplan vertretungsplan = null; 
    try { 
     XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); 
     SaxHandler saxHandler = new SaxHandler(); 
     xmlReader.setContentHandler(saxHandler); 
     xmlReader.parse(new InputSource(is)); 
     vertretungsplan = saxHandler.getVertretungsplan(); 

    } catch (Exception ex) { 
     Log.d("XML", "SAXXMLParser: parse() failed"); 
    } 

    return vertretungsplan; 
} 
} 

И от вашего звонка деятельности: (Ниже всего лишь пример от получения XML из папки активов вы можете использовать свой предпочтительный способ получения входного потока и разобрать его).

Vertretungsplan vertretungsplan = SaxParser.parse(getAssets().open("test.xml")); 

Сообщите мне, если у вас есть какие-либо сомнения.

Смежные вопросы