android - SimpleXML Java - 读取根元素中的值

标签 android simple-framework

我正在使用 SimpleXML for Java 来解析对 Java 类映射的 XML 响应。但是,我无法在我的 Android 设备上使用这个特定的部分。

我的 XML fragment 看起来像这样,

            <t:EmailAddresses>
              <t:Entry Key="EmailAddress1">sip:xxx@abs.com</t:Entry>
              <t:Entry Key="EmailAddress2">smtp:xxx@abs.com</t:Entry>
              <t:Entry Key="EmailAddress3">SMTP:xxx@abs.com</t:Entry>
            </t:EmailAddresses>

我的 EmailAddresses 类定义如下所示,

    @Root
    public class EmailAddresses 
    {
       @ElementList
       private List<Entry> Entry;

       public List<Entry> getEntry() { return Entry; }
       public void setEntry(List<Entry> entry) { Entry = entry; }
    }

我的 Entry 类看起来像这样,

    @Element
    public class Entry 
    {
        @Attribute
        private String Key;

        public String getKey() { return Key; }
        public void setKey(String key) { Key = key; }
    }

当我解析运行解析器时,我只得到键,而且在尝试将所有 3 个解析为条目类列表时,我也会收到“多个根元素”错误。

有人可以指出我正确的方向吗?谢谢!!

注意:XML 命名空间“t”已正确定义。

最佳答案

以下是您应该更改的一些内容:

类别 EmailAddresses

@Root(name = "EmailAddresses") /* 1 */
@Namespace(prefix = "t", reference = "INSERT YOUR REFERENCE HERE!") /* 2 */
public class EmailAddresses
{
    @ElementList(inline = true) /* 3 */
    private List<Entry> Entry;

    // ...
}

解释:

  • /* 1 */ :设置元素的名称(区分大小写); simple 默认会执行此操作,但您可以确保它确实正确。
  • /* 2 */ :设置命名空间及其引用; t 需要在您的 XML 中。
  • /* 3 */ :内联列表; <t:EmailAddresses>元素由 @Root() 构成元素,所有条目如下 内联元素。否则列表将创建另一个元素作为子元素, 包装它的条目。

类别 Entry

@Root(name = "Entry") /* 1 */
@Namespace(prefix = "t", reference = "INSERT YOUR REFERENCE HERE!") /* 2 */
public class Entry
{
    @Text
    private String text; /* 3 */
    @Attribute
    private String Key;

    // ...
}

解释:

  • /* 1 */ :不要使用@Element在这里,使用 @Root() .
  • /* 2 */ :如上#2。
  • /* 3 */ :你的Entry -XML 中的标签包含文本(= 元素的值,如 “sip:...”),这些也需要映射。如果文本是可选的,您可以使用 @Text(required = false)以表明这一点。

提示:创建列表的一个实例,用条目填充它并序列化它,例如到一个文件中。因此,您可以查看映射是否符合您的预期,以及您必须在何处进行一些更正。

关于android - SimpleXML Java - 读取根元素中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976452/

相关文章:

java - 使用 org.simpleframework.xml 序列化哈希表

java - 使用 SimpleFramework 动态转换为枚举

java - Android 上的 SimpleXML 和反序列化时出错

java - android 中添加/编辑/删除联系人的事件

java - 使 XML 解析器在没有连接的情况下不会崩溃

android - Android布局中的填充颜色

java - 带有简单连接器丢弃请求的 ReSTLet?

java - LibGDX 文本不在较小视口(viewport)中居中

android - 类型检查在 kotlin 中遇到了递归

android - 如何在 SimpleXmlConverter 中为 Retrofit 1.9.0 设置自定义日期格式?