在Android改造中集成简单XML转换器时,我遇到了几个问题。
1)。在添加“在('com.squareup.retrofit:converter-simplexml:1.9.0')”中编译build.gradle“之后,我得到了编译错误。
错误报告:信息:Gradle任务:app:assembleDebug警告:Dependency 3:xpp3 3:1.1.3.3在调试时被忽略,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类包,警告:发布时忽略依赖xpp3 3:xpp3 3:1.1.3.3,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类包。
2)。通过提供根类名,我在这个http://pojo.sodhanalibrary.com/Convert的帮助下创建了Java。我不断地为一个或另一个元素获取InstantiateException或ElementException,并在字段"description“上进一步得到retrofit.converter.ConversionException:无法满足@org.simpleframework.xml.Element(data=false、name=description、required=true、type=void)的要求。许多字段也有相同的错误。
发布于 2015-08-09 16:38:35
问题1)。
我不得不在我的build.gradle中添加以下内容。由于这些软件包已经随Android而来,所以出现了一些问题。
compile ('com.squareup.retrofit:converter-simplexml:1.9.0') {
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
}问题2)。
我必须有Java类层次结构,它应该从XML中的第一个元素开始。我的XML中第一个元素是"Rss“。在使用http://pojo.sodhanalibrary.com/Convert生成模式时,我给出了自己的名称,类似于为所有必需元素生成类的“警告”。Warnings.java有"Rss“实例成员。我没有传递Rss,而是向retrofit.Callback传递警告。
Class Warnings {
private Rss rss;
.....
.....
}
Class Rss {
private Channel channel;
.....
.....
} 它可以在一定程度上找到类的层次结构,但它开始为所有类的每个字段提供所提到的错误/异常,尽管它们似乎是可用的。
在解决这些错误上花费了相当长的时间之后,我已经将传递给retrofit.Callback的响应类从警告更改为Rss,并进行了工作。
XML:
<rss version="2.0">
<channel>...</channel>
</rss>这是我的修改请求代码,有错误:
retrofitService.getWarnings(lat, lon, authKey, new Callback<Warnings>() {
@Override
public void success(WarningsResponse warningsResponse, Response response) {
// handle success response..
}
@Override
public void failure(RetrofitError error) {
// handle error response
}
});工作代码:
retrofitService.getWarnings(lat, lon, authKey, new Callback<Rss>() {
@Override
public void success(WarningsResponse warningsResponse, Response response) {
// handle success response..
}
@Override
public void failure(RetrofitError error) {
// handle error response
}
});唯一的区别是传递给回调的类。
因此,使用XML中根元素的类名来传递回调,这样XML到Java对象的转换就很容易成功。
您可以在将XML集成到Retrofit帮助站点中找到这种讨论:
https://futurestud.io/blog/retrofit-how-to-integrate-xml-converter/
发布于 2018-05-21 08:56:49
Just in case if someone is looking for a resolution in maven then it will be
done as follows -
<dependency>
<groupId>com.squareup.retrofit</groupId
<artifactId>converter-simplexml</artifactId>
<version>${converter-simplexml.version}</version>
<exclusions>
<exclusion>
<groupId>stax</groupId>
<artifactId>stax</artifactId>
</exclusion>
</exclusions>
</dependency>https://stackoverflow.com/questions/31906173
复制相似问题