为什么我的XML解析器只返回一个字符串而不是多个字符串?

时间:2011-08-14 16:05:34

标签: java xml loops

我遇到了解析XML数据的问题。我将程序划分为3个不同的java文件,每个文件都包含一个类。其中一个是rssparser.java。该文件包含一个名为iterateRSSFeed(String URL)的函数,该函数返回一个包含已解析的描述标记的字符串。在我的main方法所在的main.java文件中,我以这种方式调用此iterateRSSFeed函数:

rssparser r = new rssparser();
String description = r.iterateRSSFeed();

然后我计划以这种方式将此String添加到JLabel:

JLabel news = new JLabel(description);

显然效果很好,我的程序运行。但是在我的XML文件中有更多的描述标签,JLabel只包含一(1)个解析的描述标签。我应该说我在iterateRSSFeed函数中的return语句是在for循环中“打包”的,在我的脑子里应该返回所有的描述标记。但没有。

请询问是否未清除某些内容或显示源代码是提供解决方案的更好方法。提前致谢! :)

1 个答案:

答案 0 :(得分:3)

当Java执行return语句时,它将离开该方法,而不是继续运行循环。

如果要从方法返回多个值,则必须将它们放在一起将它们组合在一起的对象中。通常会使用List<String>作为返回类型。

然后你的循环将填充列表,return语句(循环之后)可以立即返回整个列表。

如果您想要一个大字符串而不是多个字符串,则必须将它们合并为一个。 最简单的方法是在列表中使用.toString()方法,这将给出(如果您使用默认列表实现)类似[element1, element2, element3]的内容。

如果你不喜欢[,],你可以简单地连接它们:

List<String> list = r.iterateRSSFeed();
StringBuilder b = new StringBuilder();
for(String s : list) {
   b.append(s);
}
String description = b.toString();

这将给element1element2element3

由于Java的JLabel有一些基本的HTML支持,您也可以使用它来将列表格式化为列表:

List<String> list = r.iterateRSSFeed();
StringBuilder b = new StringBuilder();
b.append("<html><ul>");
for(String s : list) {
   b.append("<li>");
   b.append(s);
   b.append("</li>");
}
b.append("</ul>");
String description = b.toString();

结果将是<html><ul><li>element1</li><li>element2</li><li>element3</li></ul>,它将由JLabel格式化为:

  • 元素1
  • 在element2
  • 元素3