首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android改造中集成简单XML转换的几个问题

Android改造中集成简单XML转换的几个问题
EN

Stack Overflow用户
提问于 2015-08-09 16:08:11
回答 2查看 2.6K关注 0票数 5

在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)的要求。许多字段也有相同的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-09 16:38:35

问题1)。

我不得不在我的build.gradle中添加以下内容。由于这些软件包已经随Android而来,所以出现了一些问题。

代码语言:javascript
复制
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传递警告。

代码语言:javascript
复制
Class Warnings {
   private Rss rss;
   .....
   .....
}  

Class Rss {
   private Channel channel;
   .....
   .....
}  

它可以在一定程度上找到类的层次结构,但它开始为所有类的每个字段提供所提到的错误/异常,尽管它们似乎是可用的。

在解决这些错误上花费了相当长的时间之后,我已经将传递给retrofit.Callback的响应类从警告更改为Rss,并进行了工作。

XML:

代码语言:javascript
复制
<rss version="2.0">
<channel>...</channel>
</rss>

这是我的修改请求代码,有错误:

代码语言:javascript
复制
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
              }
        });

工作代码:

代码语言:javascript
复制
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/

票数 12
EN

Stack Overflow用户

发布于 2018-05-21 08:56:49

代码语言:javascript
复制
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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31906173

复制
相关文章

相似问题

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