如何解析XML包装JSON

问题描述:

我只是想知道如何解析服务器的以下响应。我只是想从XML中获得JSON。因为我知道如何解析JSON响应所以,有人请指导我如何得到这个。如何解析XML包装JSON

我看过this链接为xml解析,但我不知道如何专门解析这个(基础给定的响应)。该回应如下

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

你可以看到它在

<string xmlns="http://tempuri.org/"> 

我只是想知道如何分析这种类型respne的whcih是的Json我可以做解析响应的其余部分我的自我。请只是帮助我该怎么办呢

+0

看看这个【答案】(HTTP ://*.com/a/1823328/5333674) – yvzzztrk

+0

是不是还有其他的东西,容易吗?其实我是一个初学者,我真的不明白你的附加链接发生了什么, –

+0

没有任何方式来删除开始XML开始标记和结束XML标记,并获得JSON只? –

这应该工作,我没有测试它尚未

import android.util.Xml; 

import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 

import java.io.IOException; 
import java.io.InputStream; 

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

这是你如何使用它

StringXmlParser xmlParser = new StringXmlParser(); 
String jsonString; 
try { 
    // You need to get the input stream for the xml. 
    jsonString = xmlParser.parse(inputStream); 
} finally { 
    if(inputStream != null) { 
     inputStream.close(); 
    } 
} 
+0

让我试试............ –

+0

它解析xml后返回字符串? –

+0

解析函数返回你的字符串,第二段代码中的'jsonString'变量保存你的json,一般来说解析函数应该返回java对象中xml的根元素内部的任何东西,因为你的根元素是一个json字符串,返回字符串 – Bhargav