【发布时间】:2015-06-20 20:18:18
【问题描述】:
我一直在尝试解决这个问题 1 小时 30 分,这对于一个看起来非常简单的问题来说太混乱了,所以我来这里询问。
我向第 3 方 API 发送获取请求,以获取 xml 格式的动漫(电影)详细信息。 我将这些存储在 Ann.java 类中,该类由 netbean 的 JAXB xml 绑定从示例 xml 响应自动生成。
最初我使用的 xml 文件只返回一个动漫条目,因此我可以使用
String output = gt.fetchMovie().getAnime().getName();
gt 是我的网络服务。这会将动画的名称打印到我的 IDE。
我更改了设置,以便第 3 方 API 响应为我提供多个动画结果,而不仅仅是一个。我现在搜索“新世纪福音战士”并得到 3 个结果。
但是,xml 和 java 类的新模式意味着属性存储为列表。例如。如果我想访问动画的 getName,它就在这个结构中:
public class Ann {
protected List<Object> animeOrManga;
public List<Object> getAnimeOrManga() {
if (animeOrManga == null) {
animeOrManga = new ArrayList<Object>();
}
return this.animeOrManga;
}
public String getName() {
return name;
}
我一直在试图弄清楚如何返回 getName,但找不到任何可以解释我想要做什么的东西。我不够聪明,无法“弄清楚”,并且已经进行了 1 小时 30 次的反复试验。
我知道我想做这样的事情,但猜测语法是不可能的,一切都变红了,或者找不到符号,或者其他什么。
List<Object> = gt.fetchMovie().getAnimeOrManga();
For each (list object)
getName();
感谢您的阅读!
【问题讨论】:
-
如果我对如何在语言中做一些简单的事情(例如迭代)有疑问,我的第一反应会是查找有关该语言的教程或书籍,而不是在论坛中提问。
-
更新:有人向我解释说,我的自动生成的 Ann 类需要手动修改才能正确使用它。以
codefor (Object item:animeOrManga){ if(item instanceof Anime){ Anime a = (Anime) item; 的形式给了我一个修复。 System.out.println(a.getName()); }elseif(item instanceof Manga){ Manga m = (Manga) item; System.out.println(m.getName()); } }code我将考虑制作我自己的自定义 xml 解析,只需要以更简单的方式处理我需要的数据