Java XML Transformer добавляет дополнительные символы мусора при преобразовании - PullRequest
0 голосов
/ 29 апреля 2020

Как часть большего требования, я объединяю документ XML в другой документ. Я создаю два DOM по одному из исходного и конечного файлов. Используя XPATH, подбирая интересующие узлы из исходного документа, ищите наличие того же самого в целевом документе, если найден, удалите его и затем добавьте узел (путем импорта, который отсоединяет Узел от исходного документа) к целевому документу. Наконец, потоковая DOM назначения в файл с использованием Transformer. Поиск XPATH, удаление и добавление DOM работают нормально. Однако последний xml в файле приносит кучу мусорных символов в одно и то же место каждый раз, когда я запускаю программу.

Фактически, чтобы установить sh проблему, я даже остановил поиск et c , и просто прочитав файл XML, создал DOM и затем с помощью преобразователя записал DOM в другой файл. Результат тот же, куча мусорных символов попадает в файл.

Вот мой метод записи DOM в файл

private void writeDom2File(final Document document, final Path path) throws Exception{
        DOMSource source = new DOMSource(document);     
        try(java.io.FileOutputStream stream = new java.io.FileOutputStream(path.toFile())){
            StreamResult result = new StreamResult(stream);
            TransformerFactory transformerFactory = TransformerFactory.newInstance();           
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
            transformer.transform(source, result);
            stream.flush();
        }
}

В исходном файле

enter image description here

В файле назначения

enter image description here

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

...