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;
}
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