Как часть большего требования, я объединяю документ 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();
}
}
В исходном файле
В файле назначения
Любые указатели на то, что может быть неправильно или исправление будет оценено