【问题标题】:(HELP) Parse XML Data in Android(帮助) 在 Android 中解析 XML 数据
【发布时间】:2014-02-23 03:40:20
【问题描述】:

我对 Android 中的 XML 解析非常困惑。 我试图解析这个 xml 链接/文件:[http://93.186.202.34/vertretungsplan.php?api=10d]。 我尝试了不同的教程和示例,但示例 xml 的结构不同,我对此非常困惑。 我只想在文本视图或没有额外项目窗口的情况下显示数据。 有人可以给我一个想法如何解决这个问题,或者用我的链接举一个小例子吗? 那真是太好了。 :D

【问题讨论】:

    标签: android xml parsing hyperlink parsexml


    【解决方案1】:

    给你...

    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"));
    

    如果您有任何疑问,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2011-06-21
      相关资源
      最近更新 更多