Java XML 使用 Transformer.transform 解析,它自己可以正常工作,使用 Maven 时不起作用

Java XML parsing using Transformer.transform, works fine on its own, does not work when using Maven

The only Question i found that seemed similiar but sadly this didnt help

您好,我已经在这个问题上停留了几个小时了。 我正在尝试将新数据写入一个预先存在的 XML 文件(/在它尚不存在时创建它)以用于我正在为 uni 编程的小型游戏的数据收集。 我为此创建了一个 DataRecorder class,在 class

中使用 main 进行测试时工作正常
private Transformer transformer;
    private Document documentWriter;
    private DocumentBuilder documentBuilder;
    private Element eventList;
    private static final String RECORDED_DATA = "Game/src/main/resources/recordedData.xml";

public DataRecorder() {
        recordedData = new ArrayList<Data>();
        this.username = System.getProperty("user.name");
        this.newData = false;

        try {
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            this.transformer = transformerFactory.newTransformer();
        } catch (Exception e) {
            System.out.println("Error when creating DataRecorder: Transformer");
        }
        File tempFile = new File(RECORDED_DATA);
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            this.documentBuilder = dbf.newDocumentBuilder();
            if (!tempFile.exists()) {
                //Creates new Document if it doesnt exist
                this.documentWriter = this.documentBuilder.newDocument();
            } else {
                this.documentWriter = this.documentBuilder.parse(RECORDED_DATA);
            }
        } catch (Exception e) {
            System.out.println("Error when creating DataRecorder: Document Writer");
        }

        Element root;
        if (!tempFile.exists()) {
            //Creates new Document if it doesnt exist
            root = this.documentWriter.createElement("recordedData");
            this.documentWriter.appendChild(root);
        } else {
            root = this.documentWriter.getDocumentElement();
        }

        Element player = this.documentWriter.createElement("Player");
        player.setAttribute("name", this.username);
        root.appendChild(player);


        this.eventList = this.documentWriter.createElement("EventList");
        this.eventList.setAttribute("date", Date.from(java.time.ZonedDateTime.now().toInstant()).toString());
        this.eventList.setAttribute("timezone", java.time.ZonedDateTime.now().getZone().toString());
        player.appendChild(this.eventList);

        DOMSource source = new DOMSource(this.documentWriter);
        StreamResult result = new StreamResult(System.getProperty("user.dir")  + "/src/main/resources/recordedData.xml");

        try {
            this.transformer.transform(source, result);
        } catch (Exception e) {
            System.out.println("Error when creating DataRecorder: Could not write System Name and Date");
            System.out.println(e);
        }
    }

这将创建一个 XML 文件,如下所示

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<recordedData>
    <Player name="Name">
        <EventList date="Wed Jun 24 21:34:46 CEST 2020" timezone="Europe/Berlin"/>
    </Player>
</recordedData>

问题是,当我用它自己的 Main 执行这个 Class 时,它只是添加了一些新行(这是我想要它做的),而当使用 Maven 执行时,它完全重写了 xml 文件.

你的路径是你的资源文件夹,资源文件夹是一个maven便利文件夹,当你运行 maven构建时那个文件夹不存在。当 Maven 构建 运行s.

时,该文件夹的内容被复制到 target/classes 文件夹

尝试使用源代码存储库之外的文件夹