0

为什么这会返回“null”?它应该返回“Beedrill & Bug”...

数据.java:

package com.example.pokemon;

import java.io.Serializable;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root(name="Data", strict=false)
public class Data implements Serializable {

    public Data() {}

    @Element(name = "nm", required=false)
    private String nm;

    public String gtNm(){
        return nm;
    }
    @Element(name = "tp", required=false)
    private String tp;

    public String gtTp(){
        return tp;
    }
}

数据.xml:

<?xml version = "1.0" encoding = "utf-8" ?>

<Data>

    <Pokemon> 
        <nm>Beedrill</nm> 
        <tp>bug</tp> 
        <ablt>swarm</ablt>
        <wkns>fire</wkns>
        <img>beedrill</img>
    </Pokemon> 


</Data>

MainActivity.java:

    try {
        Serializer serializer = new Persister();
        AssetManager assetManager = getAssets();
        InputStream inputStream = assetManager.open("data.xml");
        Data d = serializer.read(Data.class, inputStream);
        System.out.println("[JOE]: It worked! "+d.gtNm());
        System.out.println("[JOE]: It worked! "+d.gtTp());
    } 
    catch (Exception e) {
        e.printStackTrace();
        System.out.println("[JOE]: error! "+e.getMessage());
    }

日志猫:

[JOE]: It worked! null
[JOE]: It worked! null
4

1 回答 1

2

您的 xml 树是...

<Data>
    <Pokemon> 
        <nm>Beedrill</nm> 

这意味着,您需要 Data 中的以下内容,因为 Pokemon 是 Data 的一个元素,而 Nm 是 pokemon 的一个属性。

   @Element
   private Pokemon pokemon;

然后,您需要创建一个名为 Pokemon 的类,它具有您在 Data 中指定的属性,这样,您可以d.getPokemon().gtNm();

按照“嵌套对象序列化”下的示例进行操作

于 2013-10-22T15:12:51.380 回答