0

我正在使用下面的方法来生成一个 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);
4

0 回答 0