我是新來的android工作室和麪向對象的編程,所以一般道歉,如果這是顯而易見的,但我不能讓我的頭圍繞它。我有一個小型的XML Web服務器,我可以連接到它併發送數據,我也可以讀回來並在顯示器中查看它。我想解析XML
,但無法使其正常工作。Xml從字符串解析問題
該行 「System.out.println(output);」 以字符串形式向我提供服務器的輸出。
響應是從一個字符串保存的,但我認爲我需要一個不同的格式來做一個拉解析器。該程序基本上打印這個字符串,然後崩潰。解析我的數據的最佳方式是什麼?任何幫助將非常感激。
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;
}
我也嘗試使用文檔,但我不知道是在和我是否可以打印它像什麼格式的文檔。
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;
}
您在文本線路來讀取線,扔掉所有,但最後一行。這不太可能導致有效的XML。除此之外,使用LogCat檢查與您的崩潰相關的Java堆棧跟蹤:https://stackoverflow.com/questions/23353173/uncomfort-myapp-has-stopped-how-can-i-solve-this – CommonsWare