private void readSkills(String path, DataModel dataModel) {
		try {
			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
			Document doc = docBuilder.parse(new File(path));

			// normalize text representation
			doc.getDocumentElement().normalize();

			NodeList listOfSkillTrees = doc.getElementsByTagName("skillTree");
			for (int s = 0; s < listOfSkillTrees.getLength(); s++) {
				Node skillTreeNode = listOfSkillTrees.item(s);
				if (skillTreeNode.getNodeType() == Node.ELEMENT_NODE) {
					Element skillTreeElement = (Element) skillTreeNode;

					SkillTree tree = new SkillTree(skillTreeElement.getAttribute("name"));
					dataModel.getSkillTrees().add(tree);

					NodeList listOfSkill = skillTreeElement.getElementsByTagName("skill");
					for (int s2 = 0; s2 < listOfSkill.getLength(); s2++) {
						Node skillNode = listOfSkill.item(s2);
						if (skillNode.getNodeType() == Node.ELEMENT_NODE) {

							Element skillElement = (Element) skillNode;

							Skill skill = new Skill(getTagValue("tag", skillElement), LanguageTools.translate(getTagValue(
									"name", skillElement)));
							skill.setValue(Integer.parseInt(getTagValue("value", skillElement)));
							skill.setMaxValue(Integer.parseInt(getTagValue("maxValue", skillElement)));
							skill.setRank(Integer.parseInt(getTagValue("rank", skillElement)));
							skill.setPosition(Integer.parseInt(getTagValue("position", skillElement)));
							skill.setIconName(getTagValue("icon", skillElement));

							String dependencyTag = getTagValue("dependency", skillElement);

							if (dependencyTag != null) {
								skill.setDependency(dataModel.getSkill(dependencyTag));
							}

							dataModel.getSkills().add(skill.getTag(), skill);
							tree.addSkill(skill);
							skill.setParentTree(tree);
						}
					}
				}
			}

		} catch (SAXParseException err) {
			System.out.println("** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId());
			System.out.println(" " + err.getMessage());

		} catch (SAXException e) {
			Exception x = e.getException();
			((x == null) ? e : x).printStackTrace();

		} catch (Throwable t) {
			t.printStackTrace();
		}

	}