Как обновить существующий файл xml новым дочерним элементом

Я пытаюсь добавить новый дочерний элемент в существующий файл XML. Он добавляется, но формат xml неверен

Я использую SAXBuilder для анализа XML-файла.

public static void main(String[] args) throws JDOMException, IOException {
    Document document = null;
    Element root = null;

    File xmlFile = new File("Sample.xml");
    FileInputStream fis = new FileInputStream(xmlFile);
    // create a sax builder to parse the document
    SAXBuilder sb = new SAXBuilder();
    // parse the xml content provided by the file input stream and create a Document object
    document = sb.build(fis);
    // get the root element of the document
    root = document.getRootElement();
    System.out.println(root.getChildren());
    fis.close();


    root.addContent(newChild());
    document.setContent(root);

    FileWriter writer = new FileWriter("products.xml");
    XMLOutputter outputter = new XMLOutputter();
    outputter.output(document, writer);
    writer.close(); // close writer
}

protected static String newChild() throws JDOMException, IOException{
    StringBuilder sbFeatureInfo = new StringBuilder();
    sbFeatureInfo.append("\t<Feature id=\"123\">\n");
    sbFeatureInfo.append("\t\t<id>123</id>\n");
    sbFeatureInfo.append("\t\t<type>test</type>\n");
    sbFeatureInfo.append("\t</Feature>\n");


    return sbFeatureInfo.toString();
}

Выход

<?xml version = "1.0" encoding = "UTF-8"?> </PC> <Feature id = "1"> <id>1</id> <type>LF</type> </Feature> &lt;Feature id = "123"&gt; &lt;id&gt;123&lt;/id&gt; &lt;type&gt;test&lt;/type&gt; &lt;/Feature&gt; </PC>

Выходной файл: <?xml version = "1.0" encoding = "UTF-8"?> </PC> <Feature id = "1"> <id>1</id> <type>LF</type> </ Feature> &lt;Feature id = "123"&gt; &lt;id&gt;123&lt;/id&gt; &lt;тип&gt;тест&lt;/тип&gt; &lt;/Функция&gt; </ПК>

shiva 02.04.2019 08:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
45
1

Ответы 1

Пожалуйста, попробуйте приведенный ниже код.

Примечание: это просто подсказка, а не скомпилированный код.

Element feature  = document.createElement("Feature ");    
Element id = document.createElement("id");
id.appendChild(document.createTextNode(...));
feature.appendChild(id);          
root.appendChild(feature);

Другие вопросы по теме

Похожие вопросы

Как интегрировать вход с Linked-in в Android Studio
Кодировка URL-адреса WebTest Cient exchange () приводит к «Ожидаемый статус: <200>, но был: <404>». Есть ли способ остановить кодирование моего URL-адреса?
JPA - Спецификация с пунктом in и без учета регистра
«Mule4 SFTP-коннектор записи записывает файл с отметкой времени, переместить коннектор не может получить имя файла из другого потока»
Почему этот метод пузырьковой сортировки не работает? Зачем нужен еще один цикл for?
Запускать задание Дженкинса каждые 2 часа в случайную минуту в диапазоне от n до m
Как я могу разделить строку, кроме как внутри кавычек, используя java
Регулярное выражение найти строку между 2 символами, разделенными запятой
Исполнитель запланированного пула потоков Java с начальной задержкой при проверке некоторого условия для некоторого значения
Как вести журнал при загрузке Spring для разных уровней журнала в разных файлах