Java 将XML数据传递到文件中

Java 将XML数据传递到文件中,java,xml,Java,Xml,我有一个界面,可以同时播放两个视频,用户可以随时在上面显示的3个文本框中为视频添加评论。我想做的是用时间戳保存保存在这些框中的文本。我有一个类来创建一个saved对象,它通过点击save按钮获取3个文本输入和视频的位置。我不确定的是,一旦我将输入传递回我的类,如何保存它 以下是我在单击按钮时调用类的代码: Save.addActionListener(new ActionListener() { @Override public void actionPerfor

我有一个界面,可以同时播放两个视频,用户可以随时在上面显示的3个文本框中为视频添加评论。我想做的是用时间戳保存保存在这些框中的文本。我有一个类来创建一个saved对象,它通过点击save按钮获取3个文本输入和视频的位置。我不确定的是,一旦我将输入传递回我的类,如何保存它

以下是我在单击按钮时调用类的代码:

Save.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent i) {

            Saved saved = new Saved();
            saved.setPosition(mediaPlayerComponent2.getMediaPlayer().getPosition() * 1000);
            saved.setGap(textArea.getText());
            saved.setForces(textArea1.getText());
            saved.setFindings(textArea2.getText());

            try {
                File file = new File("text.xml");
                JAXBContext jaxbContext = JAXBContext.newInstance(Saved.class);
                Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

                // output printed
                jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

                jaxbMarshaller.marshal(saved, file);
                jaxbMarshaller.marshal(saved, System.out);

            } catch (JAXBException e) {
                e.printStackTrace();
            }
        }

    });
以下是我创建已保存对象的类:

@XmlRootElement
public class Saved {
    float position;
    String gap;
    String forces;
    String findings;

    public float getPosition(){
        return position;
    }

    @XmlAttribute
    public void setPosition(float position){
        this.position = position;

    }

    public String getgap() {
    return gap;
}

@XmlElement
public void setGap(String gap) {
    this.gap = gap;
}

public String forces() {
    return forces;
}

@XmlElement
public void setForces(String forces) {
    this.forces = forces;
}

    public String findings() {
    return forces;
}

@XmlElement
public void setFindings(String findings) {
    this.findings = findings;
    }

}    
根据评论:

首先,您尝试对一个非静态的内部类进行封送,这可以通过将其更改为静态嵌套类或“外部”类来解决

然后JAXB不识别
gap
forces
发现的getter。
因此,将
getgap()
forces()
findings
更改为
getgap()
getForces()
getFindings()



还请注意,
findings()
返回
力的值

可能与中的问题相同。创建一个封送拆收器并将其“保存”到
文件中
我刚刚尝试实现将其传递到一个文件中,我得到了以下错误:非静态内部类,JAXB无法处理those@MarkHarrison
是否已保存
a?然后您需要将其声明为
静态
或将其更改为“外部”类。@devpuh感谢这是第一个错误-现在我得到了:该属性有一个setter“public void doubleviewer.doubleviewer$Saved.setFindings(java.lang.String)”但没有getter。对于marshaller,请定义getter。-我已经用新的操作处理程序代码更新了代码