package com.batiaev.aiml.loaders; import org.slf4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import static org.slf4j.LoggerFactory.getLogger; /** * Load root element from xml file * * @author batiaev * @since 25/10/16 */ public class XmlLoader implements FileLoader<Element> { private static final Logger log = getLogger(XmlLoader.class); @Override public Element load(File file) { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder; Document doc = null; try { dBuilder = dbFactory.newDocumentBuilder(); doc = dBuilder.parse(file); } catch (ParserConfigurationException | SAXException | IOException e) { e.printStackTrace(); } if (doc == null) return null; Element rootElement = doc.getDocumentElement(); rootElement.normalize(); return rootElement; } @Override public Map<String, Element> loadAll(File... files) { Map<String, Element> data = new HashMap<>(); for (File file : files) data.put(file.getName(), load(file)); log.info("Loaded {} files", data.size()); return data; } }