2017-05-17 9 views
-2

Ich bin neu in Android Studio und objektorientierte Programmierung im Allgemeinen so entschuldigen, wenn dies offensichtlich ist, aber ich kann meinen Kopf nicht um ihn herum zu bekommen. Ich habe einen kleinen XML-Webserver und kann mich mit ihm verbinden und Daten an ihn senden, und ich kann ihn auch wieder lesen und im Monitor anzeigen. Ich möchte XML analysieren, aber es kann nicht funktionieren.XML-Analyse Ausgabe von String

Die Linie "System.out.printin (Ausgang);" gibt mir die Ausgabe vom Server in einer Zeichenfolge.

Die Antwort wird aus einem String gespeichert, aber ich glaube, ich brauche es in einem anderen Format einen Pull-Parser auf, es zu tun. Das Programm druckt diese Zeichenfolge im Grunde und stürzt dann ab. Was ist der beste Weg, um meine Daten zu parsen? Jede Hilfe würde wirklich geschätzt werden.

public class HTTPRequestTask extends AsyncTask<String , Void, String > { 
@Override 
protected String doInBackground(String... args) { 
    String IP = args[0]; 
    System.out.println(IP); 
    try { 
     URL url = new URL(IP); 
     XmlPullParser recievedData = XmlPullParserFactory.newInstance().newPullParser(); 
     recievedData.setInput(url.openStream(),null); 
     System.setProperty("http.keepAlive", "false"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("Accept", "application/json"); 


     if (conn.getResponseCode() != 200) { 
      throw new RuntimeException("Failed : HTTP error code : " 
        + conn.getResponseCode()); 
     } 

     BufferedReader br = new BufferedReader(new InputStreamReader(
       (conn.getInputStream()))); 

     String output; 

     System.out.println("Output from Server .... \n"); 
     while ((output = br.readLine()) != null) { 
      System.out.println(output); 

     } 
     XmlPullParser parser = Xml.newPullParser(); 
     parser.setInput(new StringReader(output)); 

     System.out.println("doc"); 
     System.out.println(parser); 
     System.out.println("Disconnecting\n"); 
     conn.disconnect(); 
     System.out.println(recievedData); 
     processRecievedData(recievedData); 

     String[] separated = output.split("F"); 
     // separated[0]; // this will contain "Fruit" 
     // separated[1]; // this will contain " they taste good" 
     //System.out.println(separated); 

    } catch (MalformedURLException e) { 

     e.printStackTrace(); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 

    } 

    return null; 
} 

Ich versuche auch, und Dokument zu verwenden, aber ich bin nicht sicher, welches Format Dokument in ist und ob ich es so drucken.

public Document GetData(String output){ 
    try { 
     DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = null; 
     builder = builderFactory.newDocumentBuilder(); 
     //Document xmlDoc = builder.parse(output); 
     //System.out.println(xmlDoc); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
    return null; 
} 
+2

Sie sind für Zeile in Textzeile zu lesen, das Wegwerfen alle, aber die letzte Zeile. Das führt wahrscheinlich nicht zu einem gültigen XML. Darüber hinaus verwenden LogCat den Java-Stack-Trace mit dem Absturz im Zusammenhang zu untersuchen: https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – CommonsWare

Antwort

-1

Es gibt verschiedene Möglichkeiten, Ihr XML zu parsen. Es hängt von der Struktur Ihres XML-Formats ab. Sie müssen nur einen geeigneten Parser für Ihr XML-Format finden und die entsprechenden Schritte ausführen. Eine letzte Sache stellen Sie sicher, dass Sie die gleichen Schlüssel benutzen, um die Daten zu erhalten. Versuchen Sie zuerst, die Struktur richtig zu verstehen, dann ist es keine große Sache. Probieren Sie diese Tutorials aus und vergleichen Sie Ihr XML-Format mit den Beispielen in diesen Tutorials.

https://developer.android.com/training/basics/network-ops/xml.html

https://www.tutorialspoint.com/android/android_xml_parsers.htm

http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

+0

Das ist nicht das ist Problem. Siehe [comment by CommonsWare] (http://stackoverflow.com/questions/44035463/xml-parsing-issue-from-string#comment75097654_44035463) – Andreas