我正在开发一个Android应用程序,并使用Volley库。一些请求的响应是XML格式的。我搜索了有关如何处理XML的Android教程,但似乎找不到。
对我来说,目前唯一的选择是:
我没有看到任何处理XML对象的类。
任何其他建议。救命?
发布于 2013-12-08 05:50:14
正如有人在评论中指出的那样,有人在此回答:
Volley不直接提供XML对象。您的方法是将响应作为字符串,然后膨胀到XMLObject,这就是我所做的方法。
我创建了一个类,用于解析来自服务器的XML响应(将GsonRequest与Simple相结合)。下面是类代码片段:SimpleXmlRequest
首先,它将来自Server的响应作为字符串。然后,它使用简单序列化工具(http://simple.sourceforge.net/)来膨胀对XML对象的响应。
发布于 2013-12-08 05:52:42
gson-xml与GsonRequest的集成可能是您的答案。
发布于 2013-12-09 17:27:27
这是我几周前写的,用来截击的东西。它使用简单序列化进行xml解析,非常类似于GSON。
代码:
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));
}
}
}https://stackoverflow.com/questions/20447341
复制相似问题