Xml数据在android中转换为Json数据

时间:2013-06-24 06:16:40

标签: android web-services xml-parsing

我需要解析来自Web服务的XML数据。但是,当我从Web服务获取数据时,数据的格式为JSON(在浏览器中我将数据视为XML)。所以,请指导我如何将xml数据导入我的应用程序。

我正在使用以下内容。

在我的主要活动中:

static final String URL = "http://nclex.testshell.net/api/resources";
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Log.e("Response is...",xml);

我的xmlParser类

public class XMLParser {

    // constructor
    public XMLParser() {

    }

    /**
     * Getting XML from URL making HTTP request
     * @param url string
     * */
    public String getXmlFromUrl(String url) {
        String xml = null;

        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);

            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            xml = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // return XML
        return xml;
    }
}

输出响应

  

[{“ResourceId”:1,“Title”:“GRE修订通用测试”,“描述”:“   GRE修订一般的口头推理部分   测试“,”链接“:”http://www.ets.org/gre/revised_general/about/content/verbal_reasoning“},{”ResourceId“:2,”标题“:”GRE Power Pre“,”描述“:”GRE Power   Pre“,”Link“:”http://www.number2.com/exams/gre/companion/index.cfm?s=0“},{”ResourceId“:3,”Title“:”GRE Analytical Writing“,”Description“:”GRE Analytical   写作 “ ”链接“: ”http://www.mygretutor.com/tests.aspx“},{ ”RESOURCEID“:4, ”标题“:” GATE   建筑与建筑规划“,”描述“:”GATE Architecture&   规划 “ ”链接“: ”http://www.onestopgate.com/gate-sample-papers/architecture-planning/“},{ ”RESOURCEID“:5, ”标题“: ”TarGATE“, ”说明“:” GATE   实现你的   目标 “ ”链接“: ”http://gateforum.com/Testseries-Venue.php“},{ ”RESOURCEID“:6, ”标题“:” TOEFL   iBT“,”描述“:”TOEFL iBT测试样本   问题”, “链接”: “https://www.ets.org/toefl/ibt/prepare/sample_questions”}]

1 个答案:

答案 0 :(得分:2)

使用Web服务从服务器检索的数据类型或格式完全取决于实现Web服务的语言以及Web服务选择格式化数据的响应代码。

较旧的Web服务或平台主要支持XML格式。新的Web服务使用Json格式,因为它的重量轻。

在您的情况下,您的Web服务支持两种格式(XML,Json),并且它根据接收请求的平台(Mobile,Desktop)选择格式。(可能是它充当通用Web服务)。

测试Web服务响应的一种方法是从平台浏览器请求它,即使用您的平台浏览器(桌面或移动设备)查看您平台的响应。

最后,回答你的问题, 更改服务器端的代码并确保它返回XML数据作为移动平台的响应(您不必担心应用程序端的代码;所有更改都要在服务器端)。

但是,您也可以将Json转换为xml,

JSONObject Jobj = new JSONObject(jsonString);

然后你可以使用XML类以XML格式获取它,如下所示:

String xml = org.json.XML.toString(Jobj);

但不建议这样做,因为它需要额外的CPU时间才能将Json转换为xml,如果您的响应数据很大,则可能会出现问题。