Создание элементов в xml на java

129
13 апреля 2018, 17:53

Всем доброго времени суток :) В общем вот такой вопрос: создал класс с методом сохранения данных, которые лежат в 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)));
    }
}
Answer 1

Проблема решена) я забыл сделать employees потомком для document)

READ ALSO
Взял первый заказ на UpWORK - как спасти себя? [требует правки]

Взял первый заказ на UpWORK - как спасти себя? [требует правки]

Позавчера взял первый заказ на UpWORK - через 2 года после регистрации профиляРаньше то не получалось, то руки не доходили

289
C++ и Lua использование нескольких версий

C++ и Lua использование нескольких версий

Как можно использовать несколько версий Lua (например 52 и 5

262
Перегрузка операции инкремента

Перегрузка операции инкремента

Перегрузил операцию инкремента специально для своего класса, но возникла проблема: если написать my_class++ то код не работает, зато при ++my_class...

239
Методы класса по умолчанию

Методы класса по умолчанию

Какие методы классы обязательно присутствуют в классе? Я знаю следующие:

214