Retrofit Xml解析

相關(guān)依賴

添加Retrofit 及xml解析的依賴

implementation 'com.squareup.retrofit2:retrofit:(insert latest version)'
implementation ('com.squareup.retrofit2:converter-simplexml:2.1.0'){
        exclude group: 'xpp3', module: 'xpp3'
        exclude group: 'stax', module: 'stax-api'
        exclude group: 'stax', module: 'stax'
    }

也可以通過https://square.github.io/retrofit/#download下載Retrofit最新的jar包

編寫解析的實(shí)體類XMLService 其中包含有單個(gè)屬性如:type question等,也包含一個(gè)鏈表relatedQuestions使用@ElementList標(biāo)識(shí),并且由于不支持內(nèi)部類則重新編寫另一個(gè)RelatedQuestion的實(shí)體類


import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

import java.util.List;

/**
 *     Root:修飾實(shí)體類厘托,根節(jié)點(diǎn)近范,最外層的節(jié)點(diǎn),
 *     name:節(jié)點(diǎn)的名稱
 *   strict:xml中有的元素集峦,而實(shí)體類中沒有伏社,在實(shí)體類的@(Root)中加上strict = false
 *
 *  Element:單個(gè)節(jié)點(diǎn)非 實(shí)體/鏈表
 *     name:節(jié)點(diǎn)名稱
 *
 * ElementList:標(biāo)記鏈表
 *      inline:ElementList的一個(gè)屬性,由于ElementList包了一層塔淤,如果為false將不能解析
 *   required : 實(shí)體類中有摘昌,xml中沒有,且聲明為@Element的高蜂,在@Element中加上required = false
 */
@Root(name = "Response", strict = false) //name:要解析的xml數(shù)據(jù)的頭部
public class XMLService {
    @Element(name = "Type")
    public int type;
    @Element(name = "Question")
    public String question;
    @Element(name = "Content")
    public String content;
    @Element(name = "Similarity")
    public double similarity;
    @ElementList(required = false, inline = true,name = "RelatedQuestions")
    public List<RelatedQuestion> relatedQuestions;

    @Override
    public String toString() {
        return "CcbBlpResponse{" +
                "type=" + type +
                ", question='" + question + '\'' +
                ", content='" + content + '\'' +
                ", similarity=" + similarity +
                ", relatedQuestions=" + relatedQuestions.get(0).question +
                '}';
    }
}

RelatedQuestion實(shí)體類

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
/**
 *     Root:修飾實(shí)體類聪黎,根節(jié)點(diǎn),最外層的節(jié)點(diǎn)备恤,
 *     name:節(jié)點(diǎn)的名稱
 *   strict:xml中有的元素稿饰,而實(shí)體類中沒有,在實(shí)體類的@(Root)中加上strict = false
 *
 *   required: 因?yàn)閤ml返回可能不含有Question 所以required = false
 */
@Root(name = "RelatedQuestions", strict = false)
class RelatedQuestion {
    @Element(name = "Question",required = false)
    String question;
}

初始化Retrofi及Service

Retrofi初始胡網(wǎng)上一大把露泊,直接添加xml解析器即可:

 .addConverterFactory(SimpleXmlConverterFactory.create()) // 添加xml轉(zhuǎn)換器
Service
    /**
     * ccb nlp
     *
     * @return
     */
    @GET("robot-bankccb/ask-robot.action?")
    Flowable<XMLService> ccbNlpRequest(@Query("userId") String userId,
                                         @Query("sessionId") String sessionId,
                                         @Query("dstType") String dstType,
                                         @Query("playform") String playform,
                                         @Query("question") String question);

到此解析基本完成喉镰,唯一遇到的問題就是當(dāng)有些參數(shù)返回時(shí)空的時(shí)候需要特殊處理如RelatedQuestion的question有時(shí)會(huì)返回未空,所以增加required = false惭笑;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侣姆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铺敌,老刑警劉巖汇歹,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偿凭,居然都是意外死亡产弹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門弯囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰哨,“玉大人,你說我怎么就攤上這事匾嘱〗锔” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵霎烙,是天一觀的道長撬讽。 經(jīng)常有香客問我,道長悬垃,這世上最難降的妖魔是什么游昼? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮尝蠕,結(jié)果婚禮上烘豌,老公的妹妹穿的比我還像新娘。我一直安慰自己看彼,他們只是感情好廊佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著靖榕,像睡著了一般标锄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上序矩,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天鸯绿,我揣著相機(jī)與錄音,去河邊找鬼簸淀。 笑死瓶蝴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的租幕。 我是一名探鬼主播舷手,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劲绪!你這毒婦竟也來了描睦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤舒憾,失蹤者是張志新(化名)和其女友劉穎凝危,沒想到半個(gè)月后钓株,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淑际。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扇住,死狀恐怖春缕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艘蹋,我是刑警寧澤锄贼,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站女阀,受9級(jí)特大地震影響宅荤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜强品,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一膘侮、第九天 我趴在偏房一處隱蔽的房頂上張望屈糊。 院中可真熱鬧的榛,春花似錦、人聲如沸逻锐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昧诱。三九已至晓淀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盏档,已是汗流浹背凶掰。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜈亩,地道東北人懦窘。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像稚配,于是被迫代替她去往敵國和親畅涂。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容