2011-04-01 4 views
0

안녕하세요 xml 파일을 사용하여 작업하고 있는데 클래스 Objects,하지만 이 메서드를 호출 할 때마다 반환하는 오전, ArrayList 크기가 0-8 및 8에서 16 및 24 ... 새로운 ArrayList 객체을 만드는 대신. 콘솔에서문제 : ArrayList 크기가 늘어납니다

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; 
} 

출력

XML Pasing Array size is = 8 //when First call of method 
XML Pasing Array size is = 16 //when Secondcall of method 

에 사람이 무슨 일인지 설명 할 수 : 여기

코드인가?

답변

2

categoryArray는 지역 변수가 아닌 것 같습니다, 그것은 인스턴스 변수입니다 .. 그 이유는 모든 호출에 대한 크기가 증가 ..

+0

thx, 문제는 해결 된 비트 내 문제는 ArrayList() 인스턴스 변수입니다. –

6

코드에서 아무 곳이나 새 ArrayList를 만들지 않으므로 구문 분석 코드를 실행할 때마다 구문 분석 된 요소가 이전 코드에 추가됩니다. 방법의 시작

categoryArray = new ArrayList<clsCategory>(); 

: 같은

보십시오 뭔가.

+0

내가 호출 오전에는 '새로운 ArrayList를 ();'없다
밖에서 메서드 –