簡體   English   中英

Android SimpleXML解析似乎在深度上受到限制

[英]Android SimpleXML Parsing seems limited in Depth

我正在嘗試使用Retrofit和SimpleXML在Android上讀取配置文件。

我已經設置了依存關系和有效的XML方案。 簡單的XML開始解析我的文檔,但是當它達到某個標簽/深度時,它將失敗並顯示以下錯誤

Caused by: retrofit.converter.ConversionException: org.simpleframework.xml.core.ElementException: Element 'Host' does not have a match in class
Caused by: org.simpleframework.xml.core.ElementException: Element 'Host' does not have a match in class

我的xml的一部分看起來像這樣:

<Config>
    ...
    <Identity>
        <Address>
            <Host>...</Host>
            ...
        </Address>
        ...
     </Identity>
     ...
</Config>

它解析所有內容,直到到達Host標簽為止, Host標簽是嵌套在其中的第一個元素。 給出的錯誤通常表示缺少注釋,但是在這種情況下,應按原樣對其進行注釋。 我的映射對象如下所示:

@Root(name="Config")
public class Config {

    @ElementList(entry="Identity", inline=true)
    private List<Identity> mIdentities;

    @Root(name="Identity")
    static class Identity {

        @Element(name="Address")
        private Address mAddress;

        ...

    }

    @Root(name="Address")
    static class Address {

        @Element(name="Host")
        private String mHost;

        ...
    }
}

是否還有其他人遇到過類似的問題並且知道可能是什么問題? 還是SimpleXML受其可以達到的深度限制? 也許這是與ListElement有關的問題? 我找不到任何提及任何問題的文檔。

此異常表示缺少注釋類與xml之間的映射錯誤。 也許嵌套不正確,使用了錯誤的注釋等。

很難在這里說出原因是什么,但是請確保您的代碼看起來像這樣:

(偽代碼,而不是睾丸!)

@Root(name = "Address")
public class Address
{
    @Element(name="Host")
    private String mHost;

    // more things here ...
}

您能否至少測試一下您的問題,或者至少顯示地址的實現方式? 順便說一句。 嘗試相反的方向總是很有幫助的:取一個Config對象,對其進行序列化,然后檢查它是否按您的要求構造。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM