Всем доброго времени суток :) В общем вот такой вопрос: создал класс с методом сохранения данных, которые лежат в HashMap, в XML файл. Мапа точно не пустая, ошибок никаких не выскакивает, файл xml создается, но он пуст :( покажите криворукому где накосячил? Я сомневаюсь на счет добавления элементов в цикле for. Исходный файл должен будет выглядеть так:
<employees>
<staff depcode="1" depjob="clean">
<description>bla-bla-bla</description>
</staff>
<staff depcode="2" depjob="walk">
<description>ha-ha-ha</description>
</staff>
<staff depcode="3" depjob="smile">
<description>=):)=P</description>
</staff>
</employees>
А вот и сам класс:
package db_xml;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Map;
public class Saver {
private String fileName;
public Saver(String fileName){
this.fileName=fileName;
}
public void writeToFile(Map<Key,String> hashMap) throws ParserConfigurationException, TransformerException, FileNotFoundException {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.newDocument();
Element employees=document.createElement("employees");
for (Map.Entry<Key, String> entry : hashMap.entrySet()) {
Element staff=document.createElement("staff");
employees.appendChild(staff);
staff.setAttribute("depcode", entry.getKey().getDepCode());
staff.setAttribute("depjob", entry.getKey().getDepJob());
Element description=document.createElement("description");
staff.appendChild(description);
description.setTextContent(entry.getValue());
}
Transformer transformer=TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
transformer.transform(new DOMSource(document), new StreamResult(new FileOutputStream(this.fileName)));
}
}
Проблема решена) я забыл сделать employees потомком для document)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Позавчера взял первый заказ на UpWORK - через 2 года после регистрации профиляРаньше то не получалось, то руки не доходили
Как можно использовать несколько версий Lua (например 52 и 5
Перегрузил операцию инкремента специально для своего класса, но возникла проблема: если написать my_class++ то код не работает, зато при ++my_class...
Какие методы классы обязательно присутствуют в классе? Я знаю следующие: