Так что я делаю программу календаря, и мне нужно ее обновлять, когда вы добавляете в нее новую запись. Прямо сейчас, мне нужно щелкнуть по xml-файлу, чтобы его обновить, тогда все остальное отлично работает.Как вы сразу обновляете XML-документ после добавления к нему узла?
Декларация:
private DocumentBuilderFactory documentFactory;
private DocumentBuilder documentBuilder;
private Document xmlDoc;
private Node rootNode;
private static Node dataNode;
Назначение в конструкторе:
try {
documentFactory = DocumentBuilderFactory.newInstance();
documentBuilder = documentFactory.newDocumentBuilder();
xmlDoc = documentBuilder.parse(Main.class.getResourceAsStream("Calendar.xml"));
rootNode = xmlDoc.getDocumentElement();
dataNode = rootNode.getChildNodes().item(0);
} catch(ParserConfigurationException | SAXException | IOException e) {e.printStackTrace(System.out);}
узел создается и добавляется к dataNode
после нажатия на кнопку, то файл обновляется следующим образом:
try {
OutputFormat outFormat = new OutputFormat(xmlDoc);
try (FileOutputStream outStream = new FileOutputStream("src/virtualagenda/Calendar.xml")) {
XMLSerializer serializer = new XMLSerializer(outStream, outFormat);
serializer.serialize(xmlDoc);
outStream.flush();
outStream.close();
}
}catch(IOException e) {e.printStackTrace(System.out);}
Что ваша проблема/ошибка? – henje
@henje Что XML-файл не обновляется, как только я его сохраню. Мне нужно щелкнуть по файлу XML за пределами программы, чтобы обновить его. – alexanderd5398
Неправильно. Код, который вы опубликовали, записывается в файл немедленно. Нажатие на файл вне программы не может заставить программу записывать файл. Предложение не имеет смысла. Чтобы избежать необходимости «щелкнуть по файлу XML ... чтобы его обновить», я предлагаю вам попробовать F5 или что-то другое, обновляющее ваш файловый проводник. Это не проблема кодирования. Сброс NB до закрытия является избыточным. – EJP