我是新来的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