1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

XML Datei parsen!

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Sico, 28.02.2010.

  1. Sico, 28.02.2010 #1
    Sico

    Sico Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    298
    Erhaltene Danke:
    48
    Registriert seit:
    05.08.2009
    Hallo,


    kennt jemand einen Codeschnippsel zum parsen einer XML Datei?

    Gruß

    Sico
     
  2. Shinigami, 28.02.2010 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
  3. SirMArtin, 28.02.2010 #3
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    Mein kleiner XMLParser.
    Code:
    public class XMLParser {
    
      public static History parse(String xml) {
        try {
          InputStream xmlStream = new ByteArrayInputStream(xml.getBytes());
    
          DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
          Document doc = builder.parse(xmlStream);
    
          Element rootNode = doc.getDocumentElement();
    
          History h = new History();
          h.setTrackingId(rootNode.getAttribute(RestInterface.HISTORY_TRACKINGID));
          h.setLastChecked(parseDate(rootNode.getAttribute(RestInterface.HISTORY_LASTCHECKED), false));
          h.setDelivered(Boolean.parseBoolean(rootNode.getAttribute(RestInterface.HISTORY_DELIVERED)));
    
          NodeList events = rootNode.getElementsByTagName(RestInterface.EVENT);
          for (int i = 0; i < events.getLength(); i++) {
            Element event = (Element) events.item(i);
            Event e = new Event();
            h.addToEvents(e);
    
            e.setEventTime(parseDate(event.getAttribute(RestInterface.EVENT_EVENTTIME), true));
            e.setRecieveTime(parseDate(event.getAttribute(RestInterface.EVENT_RECIEVETIME), false));
    
          }
    
          return h;
        } catch (Exception e) {
          Log.e(Const.LOG_TAG, "An exception occured!", e);
          return null;
        }
      }
    
      private static String getElementValue(Element element) {
        String val = element.getChildNodes().item(0).getNodeValue();
        if (val == null)
          return "";
    
    // hier bin ich nicht sicher, ob das notwendig ist
    // ggf. funktioniert auch ein replace von "\n"
        if (val.contains("\n")) {
          val = val.replace("\n", "§§");
          StringTokenizer t = new StringTokenizer(val, "§§");
          val = "";
          while (t.hasMoreTokens()) {
            val = val + " " + t.nextToken().trim();
          }
        }
    
        return val.trim();
      }
    
      private static Date parseDate(String dateString, boolean needToFix) {
        if (StringUtils.isEmpty(dateString))
          return null;
        String[] parts = dateString.split("T");
    
        if (parts == null || StringUtils.isEmpty(parts[0]) || StringUtils.isEmpty(parts[1]))
          return null;
        String[] date = parts[0].split("-");
        String[] time = parts[1].split(":");
    
        GregorianCalendar cal = new GregorianCalendar();
        cal.set(Calendar.YEAR, Integer.parseInt(date[0]));
        cal.set(Calendar.MONTH, Integer.parseInt(date[1]) - (needToFix ? 1 : 0));
        cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date[2]));
        cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
        cal.set(Calendar.MINUTE, Integer.parseInt(time[1]));
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
      }
    
    }
    
     

Diese Seite empfehlen