Java 简单XML—如何从内部元素开始获取数据?

Java 简单XML—如何从内部元素开始获取数据?,java,android,xml,xml-deserialization,simple-framework,Java,Android,Xml,Xml Deserialization,Simple Framework,我正在尝试使用android从xml创建元素,我对根不感兴趣,只对一些嵌套元素感兴趣。我只对从下面的xml获取account对象感兴趣 <response xmlns="http://abc.abcdef.com/rest/xyz"> <request> <channel>334892326</channel> <number>486</number> </request

我正在尝试使用android从xml创建元素,我对根不感兴趣,只对一些嵌套元素感兴趣。我只对从下面的xml获取account对象感兴趣

<response xmlns="http://abc.abcdef.com/rest/xyz">
    <request>
        <channel>334892326</channel>
        <number>486</number>
    </request>
    <status>
        <code>200</code>
    </status>
    <results>
        <account>
            <creationTimestamp>2014-01-12T1:31:07Z</creationTimestamp>
            <category>
                <type>User-1</type>
                <name>User-1</name>
            </category>
        </account>
    <results>
</response>
我在bean中尝试了以下操作,但结果对象包含的所有值都是null

@Root(strict = false, name = "account")
@Path("response/results/account")
public class Account implements Serializable {

    @Element(required = false)
    private String creationTimestamp;

    @Element(required = false)
    private Category category;
}

起初,指定的XML格式不正确。但主要问题是由注释引起的-“…将属性和元素映射到关联的字段或方法”,它不适用于类,只适用于方法和字段

因此,此代码可以轻松解析XML结构(简化版):


不幸的是,@Path注释无法提取为类注释,这就是为什么必须为每个字段编写注释。

创建响应类确实需要它吗。我不能直接考虑它吗?是的,你可以,我更新了代码-只有一件事-没有响应类,你必须对每个字段重复@Path注释。
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Path;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.core.Persister;

import java.io.File;

@Root(strict = false)
public class Account {

    @Element
    @Path("results/account")
    String creationTimestamp;

    @Element
    @Path("results/account")
    Category category;

    public static void main(String[] args)
            throws Exception
    {
        Account account = new Persister().read(Account.class, new File("example.xml"));

        System.out.println(account.creationTimestamp);
        System.out.println(account.category.type);
        System.out.println(account.category.name);
    }
}

@Root
class Category {

    @Element
    String type;

    @Element
    String name;
}