如何解析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; 
      } 

是有权做和如何解析回应请回答我的源代码。

+1

显然,首先解析xml,然后内部json ... – Selvin

+0

...另一方面...为什么?为什么?为什么在服务器端返回这样的东西? ...为什么不是json或xml - 不是两个 – Selvin

+0

我不知道他们为什么向我发送这个回复我是受约束的,所以请你能告诉我如何解析转一圈,解析和我发送和连接到服务器的权利? –

感谢所有的答复,并让我明白我需要什么步骤来做到这一点。好吧,我问的是如何在解析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; 
} 

}

这解决了我的问题。我希望如果有人想要相同的解决方案,那么它可能会帮助他。只是为了帮助初学者的唯一目的而上传答案。