首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Volley Server XML请求

Android Volley Server XML请求
EN

Stack Overflow用户
提问于 2013-12-07 22:12:35
回答 3查看 6.9K关注 0票数 3

我正在开发一个Android应用程序,并使用Volley库。一些请求的响应是XML格式的。我搜索了有关如何处理XML的Android教程,但似乎找不到。

对我来说,目前唯一的选择是:

  1. 使用StringRequest作为字符串获取服务器响应
  2. 解析字符串并遍历它?

下面是截击的来源:https://android.googlesource.com/platform/frameworks/volley/+/43950676303ff68b23a8b469d6a534ccd1e08cfc/src/com/android/volley/toolbox

我没有看到任何处理XML对象的类。

任何其他建议。救命?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-08 05:50:14

正如有人在评论中指出的那样,有人在此回答:

用于Android解析xml响应的Volley库?

Volley不直接提供XML对象。您的方法是将响应作为字符串,然后膨胀到XMLObject,这就是我所做的方法。

我创建了一个类,用于解析来自服务器的XML响应(将GsonRequest与Simple相结合)。下面是类代码片段:SimpleXmlRequest

首先,它将来自Server的响应作为字符串。然后,它使用简单序列化工具(http://simple.sourceforge.net/)来膨胀对XML对象的响应。

票数 2
EN

Stack Overflow用户

发布于 2013-12-08 05:52:42

gson-xmlGsonRequest的集成可能是您的答案。

票数 0
EN

Stack Overflow用户

发布于 2013-12-09 17:27:27

这是我几周前写的,用来截击的东西。它使用简单序列化进行xml解析,非常类似于GSON。

代码:

代码语言:javascript
复制
public class XmlGsonRequest<T> extends Request<T> {

public static final int XML_REQUEST = 1;
public static final int GSON_REQUEST = 2;

private Gson mGson;
private Serializer mSerializer;
private final Class<T> mClazz;
private final Listener<T> mListener;
private final int mRequestType;


public XmlGsonRequest(int method, int requestType, String url, Class<T> clazz, Listener<T> listener,
        ErrorListener errorListener) {
    super(method, url, errorListener);
    mClazz = clazz;
    mListener = listener;
    mRequestType = requestType;
}

@Override
protected void deliverResponse(T response) {
    mListener.onResponse(response);
}

@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
    try {
        String source = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

        if (mRequestType == XML_REQUEST) {

            mSerializer = new Persister();
            Reader reader = new StringReader(source);
            return Response.success(mSerializer.read(mClazz, reader, false),
                    HttpHeaderParser.parseCacheHeaders(response));

        } else if (mRequestType == GSON_REQUEST) {

            mGson = new Gson();
            return Response.success(mGson.fromJson(source, mClazz), HttpHeaderParser.parseCacheHeaders(response));

        } else {
            return null;
        }

    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));
    } catch (JsonSyntaxException e) {
        return Response.error(new ParseError(e));
    } catch (Exception e) {
        return Response.error(new ParseError(e));
    }
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20447341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档