static void processFile(File xmlFile, 
    		Set<EbayUser> ebayUserSet, 
    		Map<String, Category> categoryMap, 
    		Set<Item> itemSet, 
    		Set<ItemCategory> itemCategorySet, 
    		Set<Bid> bidSet) {
        Document doc = null;
        try {
            doc = builder.parse(xmlFile);
        }
        catch (IOException e) {
            e.printStackTrace();
            System.exit(3);
        }
        catch (SAXException e) {
            System.out.println("Parsing error on file " + xmlFile);
            System.out.println("  (not supposed to happen with supplied XML files)");
            e.printStackTrace();
            System.exit(3);
        }
        
        /* At this point 'doc' contains a DOM representation of an 'Items' XML
         * file. Use doc.getDocumentElement() to get the root Element. */
        System.out.println("Successfully parsed - " + xmlFile);
        
        /* Fill in code here (you will probably need to write auxiliary
            methods). */
        
        Element root = doc.getDocumentElement();
        Element items[] = getElementsByTagNameNR(root, "Item");
        
        // Parse Items
        int itemCount = items.length;
        for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
        {
        	Element item = items[itemIndex];
        	String itemID = item.getAttribute("ItemID");
        	String name = StringEscapeUtils.escapeCsv(getElementTextByTagNameNR(item, "Name"));
        	String sellerLocation = StringEscapeUtils.escapeCsv(getElementTextByTagNameNR(item, "Location"));
        	String sellerCountry = StringEscapeUtils.escapeCsv(getElementTextByTagNameNR(item, "Country"));
        	String startTime = convertDateFormat(getElementTextByTagNameNR(item, "Started"));
        	String endTime = convertDateFormat(getElementTextByTagNameNR(item, "Ends"));
        	String description = getElementTextByTagNameNR(item, "Description");
        	if (description.length() > 4000)
        		description = description.substring(0, 4000);
        	description = StringEscapeUtils.escapeCsv(description);
        	String minimumBid = strip(getElementTextByTagNameNR(item, "First_Bid"));
        	String buyNowPrice = strip(getElementTextByTagNameNR(item, "Buy_Price"));
        	if (buyNowPrice.isEmpty())
        		buyNowPrice = "0.00";
        	
        	// Parse Seller
        	Element seller = getElementByTagNameNR(item, "Seller");
        	String sellerID = seller.getAttribute("UserID");
        	String sellerRating = seller.getAttribute("Rating");
        	
        	// Create EbayUser object and add to set
        	EbayUser sellerObject = new EbayUser(sellerID, sellerRating, sellerCountry, sellerLocation);
        	ebayUserSet.add(sellerObject);
        	
        	// Create Item object and add to set
        	Item itemObject = new Item(itemID, name, buyNowPrice, minimumBid, startTime, endTime, description, sellerID); 
        	itemSet.add(itemObject);
        	
        	// Parse categories
        	Element categories[] = getElementsByTagNameNR(item, "Category");
        	int categoryCount = categories.length;
        	for (int categoryIndex = 0; categoryIndex < categoryCount; categoryIndex++)
        	{
        		// Parse Category
        		String categoryName = StringEscapeUtils.escapeCsv(getElementText(categories[categoryIndex]));
        		int categoryID;
        		
        		// Create Category object and add to map
        		if (categoryMap.containsKey(categoryName))
        		{
        			Category categoryObject = categoryMap.get(categoryName);
        			categoryID = categoryObject.categoryID;
        		}
        		else
        		{
        			categoryID = categoryMap.size();
        			Category categoryObject = new Category(categoryID, categoryName);
        			categoryMap.put(categoryName, categoryObject);
        		}
        		
        		// Create ItemCategory object and add to set
        		ItemCategory itemCategoryObject = new ItemCategory(itemID, categoryID);
        		itemCategorySet.add(itemCategoryObject);
        	}
        	
        	// Parse bids
        	Element bidsParent = getElementByTagNameNR(item, "Bids");
        	Element bids[] = getElementsByTagNameNR(bidsParent, "Bid");
        	int bidCount = bids.length;
        	for (int bidIndex = 0; bidIndex < bidCount; bidIndex++)
        	{
        		// Parse bid
        		Element bid = bids[bidIndex];
            	String bidTime = convertDateFormat(getElementTextByTagNameNR(bid, "Time"));
        		String bidAmount = strip(getElementTextByTagNameNR(bid, "Amount"));
        		
        		// Parse bidder
        		Element bidder = getElementByTagNameNR(bid, "Bidder");
        		String bidderID = StringEscapeUtils.escapeCsv(bidder.getAttribute("UserID"));
        		String bidderRating = bidder.getAttribute("Rating");
        		String bidderLocation = StringEscapeUtils.escapeCsv(getElementTextByTagNameNR(bidder, "Location"));
            	String bidderCountry = StringEscapeUtils.escapeCsv(getElementTextByTagNameNR(bidder, "Country"));
        		
        		// Create EbayUser object and add to set
        		EbayUser bidderObject = new EbayUser(bidderID, bidderRating, bidderCountry, bidderLocation);
        		ebayUserSet.add(bidderObject);
        		
        		// Create Bid object and add to set
        		Bid bidObject = new Bid(bidSet.size(), itemID, bidderID, bidTime, bidAmount);
        		bidSet.add(bidObject);
        	}
        }
        
        /**************************************************************/
        
    }