JAVA XMLOutPuter изменяет значения других узлов в документе XML
Я использую метод ниже, чтобы создать документ XML, используя getFile()
чтобы получить тот же файл, что и мой SAXBuilder.
SAXBuilder reader = new SAXBuilder();
Document document = reader.build(new File(file)); //file example: Desktop/test.camproj (which is an XML document)
Когда я пишу файл, я использую приведенный ниже код. Я изменяю только одно значение в XML-документе (который работает), но когда я открываю это видео (этот xml-файл является видеофайлом), все значения всех узлов типа Callout меняются на значения по умолчанию. Это правильный способ создания файла или я делаю что-то не так? Если я не открою видео и не открою файл в блокноте, ничего, кроме узла, который я изменяю, не изменилось.
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.setFormat(Format.getPrettyFormat());
FileOutputStream output = new FileOutputStream(getFile());
xmlOutput.output(document, output);
document.detachRootElement();
output.close();
Мое изменение узла xml (я использую /n/r для представления разрывов строк в XML):
newText = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Open Sans"
+ ";}}\n\r{\\colortbl ;\\red0\\green0\\blue0;}\n\r\\viewkind4\\uc1\\pard\\qc\\cf1\\f0\\fs36 " + newText + "\\par\n\r}\n\r;";
document.getRootElement().getChild("CSMLData").getChild("GoProject").getChild("Project")
.getChild("Timeline").getChild("GenericMixer").getChild("Tracks").getChildren().get(index2).getChild("Medias").getChildren().get(index)
.getChild("Attributes").getChild("Attribute").getChild("VectorNode").getChild("StringParameters")
.getChildren().get(3).getChild("Keyframes").getChild("Keyframe").setAttribute("value", newText);