如何解析XML包装JSON
问题描述:
任何一个可以告诉我如何解析以下如何解析XML包装JSON
<string xmlns="http://tempuri.org/">
[{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"3"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"4"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"5"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"6"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"7"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"8"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"9"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"10"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"11"},{"OSID":"2","PhoneVersion":"IPHONE5","PhoneOS":"IOS","ImageName":"[email protected]","ImageID":"12"}]
</string>
我打我的一些paramaeters用以下方法帮助URL,是不是?
public String getJSON(String url, int timeout) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.setRequestProperty("Content-Type", "application/json");
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
是有权做和如何解析回应请回答我的源代码。
答
感谢所有的答复,并让我明白我需要什么步骤来做到这一点。好吧,我问的是如何在解析xml的时候去掉xml标签,这很明显,解析xml与json相比有点棘手,而且我从中学到了如何解析它,但是如何解析这个xml响应它没有命名空间,没有方法名等
所以我张贴此作为一个答案,如果在相同的情况下,一些陷阱一个(特别是当网页设计师/服务器端程序员把它放在你:()。
我用下面的类具有了名字空间和r解析XML返回我的字符串,代码是这样如下
public class StringXmlParser {
// your xml doesn't have any name spacing so make it null.
private static final String ns = null;
public String parse(InputStream in) throws XmlPullParserException, IOException {
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in,null);
parser.nextTag();
return readString(parser);
} finally {
in.close();
}
}
private String readString(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, ns, "string");
String jsonString = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "string");
return jsonString;
}
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
String result = "";
if (parser.next() == XmlPullParser.TEXT) {
result = parser.getText();
parser.nextTag();
}
return result;
}
}
这解决了我的问题。我希望如果有人想要相同的解决方案,那么它可能会帮助他。只是为了帮助初学者的唯一目的而上传答案。
显然,首先解析xml,然后内部json ... – Selvin
...另一方面...为什么?为什么?为什么在服务器端返回这样的东西? ...为什么不是json或xml - 不是两个 – Selvin
我不知道他们为什么向我发送这个回复我是受约束的,所以请你能告诉我如何解析转一圈,解析和我发送和连接到服务器的权利? –