2013-06-24 28 views
4

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

我正在使用以下内容。

以我主要活动:

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,”标题“:”GRE revi sed通用测试“,”说明“:” GRE修订后的通用 测试“,”链接“:”http://www.ets.org/gre/revised_general/about/content/verbal_reasoning“},{”ResourceId“:2,”标题“:”GRE Power Pre“ “Description”:“GRE Power Pre”,“Link”:“http://www.number2.com/exams/gre/companion/index.cfm?s=0”},{“ResourceId”:3,“Title”:“GRE分析写作”,“说明”:“GRE分析 书写” “:”http://www.mygretutor.com/tests.aspx“},{”ResourceId“:4,”Title“:”GATE Architecture & Planning“,”Description“:”GATE Architecture & Planning“,”Link“:”http://www.onestopgate.com/gate-sample-papers/architecture-planning/“},{”ResourceId “:5,”标题“:”TarGATE“,”描述“:”GATE 获得您的 目标“,”链接“:”http://gateforum.com/Testseries-Venue.php“},{”ResourceId“:6,”标题“:”TOEFL 网考“‘说明’:‘托福网考测试样品 问题’,‘链接’:” https://www.ets.org/toefl/ibt/prepare/sample_questions“}]

+2

这是通过网络服务完成的。修改你的web服务代码... –

+0

谢谢你的快速响应,那么如何改变我的web服务代码 – koti

+0

查看你的web服务代码。将会有一个代码检查传入的响应,并查看标志或标题,告诉该服务“如果桌面应用程序请求或移动应用程序请求”。 –

回答

2

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

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

在你的情况下,你的web服务支持两种格式(XML,Json),它根据接收请求的平台(Mobile,Desktop)选择格式(可以作为通用Webservice)。

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

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

但是,你也可以转换成JSON来XML作为,

JSONObject Jobj = new JSONObject(jsonString); 

然后你可以使用XML类得到它的XML格式,像这样:

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

,但它不是推荐它需要额外的cpu时间来将Json转换为xml,如果您的响应数据很大,则可能会出现问题。