public Result find(List<DBItem> searchOn){
		
		File xml = new File("Databases/" + name + ".xml");
		SAXBuilder builder = new SAXBuilder();
		boolean findAll = searchOn == null ? true : false;
		
		try{
			
			Document document = (Document) builder.build(xml);
			Element rootNode = document.getRootElement();
			
			Result result = new Result();
			List<Element> rows = rootNode.getChild("rows").getChildren("row");
			for(Element row : rows){
				boolean found = false;
				DBRow dbrow = new DBRow();
				for(Element value : row.getChildren()){ //we loop through each value on each row looking for a field with the correct column and value
					DBItem XMLItem = columns.get(value.getAttributeValue("column")).getItem(value.getText());
					dbrow.addItem(XMLItem);
					if(!found){
						for(DBItem SearchItem : searchOn){ //even worse, we loop through each search item for each value
							if(SearchItem.equals(XMLItem)){
								found = true; //although, if we have found a match on this row we can stop looking on this row
								
								break;
							}
						}
					}
				}
				if(found)
					result.addRow(dbrow);
			}
			
			return result;
			
		}catch (IOException io) {
			System.out.println(io.getMessage());
		} catch (JDOMException jdomex) {
			System.out.println(jdomex.getMessage());
		}
		
		return null;
		
	}