Android改造中集成简单XML转换器的问题
在安卓系统改造中集成简单的XML转换器时,我遇到了几个问题。Android改造中集成简单XML转换器的问题,android,converter,integration,retrofit,simple-framework,Android,Converter,Integration,Retrofit,Simple Framework,在安卓系统改造中集成简单的XML转换器时,我遇到了几个问题。 1). 在build.gradle中添加了“compile('com.squareup.reformation:converter simplexml:1.9.0')之后,我遇到了编译错误 错误报告: 信息:渐变任务[:app:assembleDebug] 警告:调试时忽略依赖项xpp3:xpp3:1.1.3.3,因为它可能与Android提供的内部版本冲突。 如果出现问题,请使用jarjar重新打包以更改类包 警告:发布时忽略依赖项
1). 在build.gradle中添加了“compile('com.squareup.reformation:converter simplexml:1.9.0')之后,我遇到了编译错误 错误报告: 信息:渐变任务[:app:assembleDebug] 警告:调试时忽略依赖项xpp3:xpp3:1.1.3.3,因为它可能与Android提供的内部版本冲突。 如果出现问题,请使用jarjar重新打包以更改类包 警告:发布时忽略依赖项xpp3:xpp3:1.1.3.3,因为它可能与Android提供的内部版本冲突。 如果出现问题,请使用jarjar重新打包以更改类包 2) 。我通过提供根类名创建了Java模式。我不断得到一个或另一个元素的实例化Exception或ElementException,并在字段“description”上得到mazorly reformation.converter.ConversionException:org.simpleframework.xml.core.ValueRequiredException:cannot满足@org.simpleframework.xml.element(data=false,name=description,required=true,type=void)。许多字段出现相同错误。第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中的第一个元素开始。 我将“Rss”作为XML中的第一个元素。当我使用生成模式时,我给自己起了一个类似“Warnings”的名字,它为所有必需的元素生成了类。java有“Rss”实例成员。我没有传递Rss,而是将警告传递给reformation.Callback
Class Warnings {
private Rss rss;
.....
.....
}
Class Rss {
private Channel channel;
.....
.....
}
它可以在某种程度上找到类的层次结构,但它开始为所有类的每个字段提供所述的错误/异常,尽管这些字段似乎可用。在花了相当长的时间解决这些错误之后,我更改了传递给Reformation.Callback的response类,该类从Warnings回调到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
}
});
reformationservice.getWarnings(lat、lon、authKey、new Callback(){
@凌驾
public void成功(警告响应警告响应响应响应响应){
//处理成功响应。。
}
@凌驾
公共无效失败(错误){
//处理错误响应
}
});
工作代码:
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
}
});
reformationservice.getWarnings(lat、lon、authKey、new Callback(){
@凌驾
public void成功(警告响应警告响应响应响应响应){
//处理成功响应。。
}
@凌驾
公共无效失败(错误){
//处理错误响应
}
});
唯一的区别是传递给回调的类
因此,在XML中使用根元素的类名传递给回调,这样XML到Java对象的转换将很容易成功
您可以在XML集成改造帮助站点中找到此讨论:以防万一,如果有人在maven中寻找解决方案,那么它将是
按以下方式订立—
改装
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>