public XMLTable() throws XPathExpressionException, SAXException, IOException, ParserConfigurationException{
		
		FileInputStream file = new FileInputStream(new File(xml));
		DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder =  builderFactory.newDocumentBuilder();
		Document xmlDocument = builder.parse(file);
		XPath xPath =  XPathFactory.newInstance().newXPath();
		String expression = "//T";
		NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
		
		String keyPartkey = "P_PARTKEY";
		String keyName = "P_NAME";
		String keyRetailPrice = "P_RETAILPRICE";
		
		Elements = new ArrayList<TableElement>();
		
		for (int i = 0; i < nodeList.getLength(); i++) {
			
			NodeList lnodelist = nodeList.item(i).getChildNodes();
			int key = 0;
			String name = "";
			double retailPrice = 0;
			for(int j=0; j < lnodelist.getLength(); j++){
				
				if (lnodelist.item(j).getNodeName().equals(keyPartkey)){
					if(lnodelist.item(j).getTextContent() != null){
						key = Integer.parseInt(lnodelist.item(j).getTextContent());
					} else key = 0;
				}
				
				if (lnodelist.item(j).getNodeName().equals(keyName)){
					if(lnodelist.item(j).getTextContent() != null){
						name = lnodelist.item(j).getTextContent();
					} else name = "Not Available";
					
				}
				
				if (lnodelist.item(j).getNodeName().equals(keyRetailPrice)){
					if(lnodelist.item(j).getTextContent() != null){
						retailPrice = Double.parseDouble((lnodelist.item(j).getTextContent()));
					} else retailPrice = 0;
					
				}
			}
			
			TableElement tableElement = new TableElement(key, name, retailPrice);
			this.Elements.add(tableElement);
			file.close();
		}
		
	}