我需要解析来自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”}]
答案 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,如果您的响应数据很大,则可能会出现问题。