在使用解析xml文件时,我正在返回类ArrayList
的{{1}},但是对于此方法的每次调用都,ArrayList的大小从0到8增加8到16和24 ...而不是创建一个新的ArrayList对象。
以下是代码:
Objects
在控制台中输出
public ArrayList<clsCategory> ParseCategoryXml(String fileToParse)
{
try
{
System.out.println("before XML Pasing Array size is = " + categoryArray.size());
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
//URL sourceUrl = new URL("http://d.mobrobot.com/feeds/npv1/categories_Fox.xml");
FileInputStream inputFile = new FileInputStream(fileToParse);
/** Create handler to handle XML Tags ( extends DefaultHandler ) */
xr.setContentHandler(this);
xr.parse(new InputSource(inputFile));
}
catch (Exception e)
{
System.out.println("XML Pasing Excpetion = " + e);
}
System.out.println("XML Pasing Array size is = " + categoryArray.size());
return categoryArray;
}
任何人都可以向我解释发生了什么吗?
答案 0 :(得分:6)
我认为您不会在代码中的任何位置创建新的ArrayList,因此每次运行解析代码时,解析后的元素都会附加到旧代码中。
尝试类似:
categoryArray = new ArrayList<clsCategory>();
在方法开始时。
答案 1 :(得分:2)
看起来categoryArray
不是局部变量,它是一个实例变量..这就是为什么每次调用它的大小都会增加..