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);

0 ответов

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