2015-01-18 3 views
-1

Так что я делаю программу календаря, и мне нужно ее обновлять, когда вы добавляете в нее новую запись. Прямо сейчас, мне нужно щелкнуть по 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);} 
+1

Что ваша проблема/ошибка? – henje

+0

@henje Что XML-файл не обновляется, как только я его сохраню. Мне нужно щелкнуть по файлу XML за пределами программы, чтобы обновить его. – alexanderd5398

+0

Неправильно. Код, который вы опубликовали, записывается в файл немедленно. Нажатие на файл вне программы не может заставить программу записывать файл. Предложение не имеет смысла. Чтобы избежать необходимости «щелкнуть по файлу XML ... чтобы его обновить», я предлагаю вам попробовать F5 или что-то другое, обновляющее ваш файловый проводник. Это не проблема кодирования. Сброс NB до закрытия является избыточным. – EJP

ответ

0

Вместо того, чтобы загружать ваш документ в конструктор, вы должны создать некоторую дополнительную процессы, такие как

  1. Загрузите XML из файла в Document
  2. Создать/обновить свой графический интерфейс, учитывая Document параметр
+0

Не могли бы вы привести мне пример? Я не уверен, как использовать подпроцессы, поэтому учебник тоже будет отличным. – alexanderd5398

+0

Зачем ему это делать и как решить эту проблему? Не ответ. – EJP

 Смежные вопросы

  • Нет связанных вопросов^_^