4

我需要从 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 修改后的普通考试","Description":"GRE 修改后的普通考试的语言推理部分","Link":" http://www.ets.org /gre/revised_general/about/content/verbal_reasoning "},{"ResourceId":2,"Title":"GRE Power Pre","Description":"GRE Power Pre","Link":" http://www .nu​​mber2.com/exams/gre/companion/index.cfm?s=0 "},{"ResourceId":3,"Title":"GRE Analytical Writing","Description":"GRE Analytical Writing","Link ":" http://www.mygretutor.com/tests.aspx "},{"ResourceId":4,"Title":"GATE 架构 &规划","描述":"GATE 架构与规划","链接":" http://www.onestopgate.com/gate-sample-papers/architecture-planning/"},{"ResourceId":5,"Title":"TarGATE","Description":"GATE 实现你的目标","Link":" http://gateforum.com/Testseries-Venue.php "} ,{"ResourceId":6,"Title":"TOEFL iBT","Description":"TOEFL iBT 考试样题","Link":" https://www.ets.org/toefl/ibt/prepare/示例问题“}]

4

1 回答 1

2

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

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

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

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

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

但是,您也可以将 Json 转换为 xml,如下所示,

JSONObject Jobj = new JSONObject(jsonString);

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

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

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

于 2013-06-24T07:07:00.320 回答