简体   繁体   English

用VTD-XML写一些XML元素

[英]Write several elments to XML by VTD-XML

I want to write several elements inside one parent and I have the following code: 我想在一个父对象中编写几个元素,并且我有以下代码:

public void writeElement(String parent, String element, String content) {
    try {
        xmlModifier.bind(vtdNav);
        vtdNav.toElement(VTDNav.FC, parent);
        xmlModifier.insertAfterHead("<" + element + ">" + content + "</" + element + ">");
        xmlModifier.output(filepath);
    } catch (ModifyException | NavException | IOException | TranscodeException e) {
        e.printStackTrace(); 
    }
}

and calling method: 和调用方法:

 @FXML
public void save() {
    String surname = surnameField.getText();
    String name = nameField.getText();
    String patronymic = patronymicField.getText();
    String id = idField.getText();
    String diagnosis = diagnosisArea.getText();
    String comments = commentsArea.getText();

    dbFile = DBFile.setDoc(dbDir + dbChoiceBox.getValue(), false);
    dbFile.writeElement("db", "patient", "");
    dbFile.writeElement("patient", "surname", surname);
    dbFile.writeElement("patient", "name", name);
    dbFile.writeElement("patient", "patronymic", patronymic);
    dbFile.writeElement("patient", "id", id);
    dbFile.writeElement("patient", "diagnosis", diagnosis);
    dbFile.writeElement("patient", "comments", comments);
}

but instead this result: 但是结果如下:

<db>
<patient>
<surname></surname>
<name></name>
...
</patient>
</db>

I have only this: 我只有这个:

<db>
<patient>
<comments></comments>
</patient>
</db>

It looks like writeElement rewrite the same element each time. 看起来writeElement重写相同的元素。 Why this is happening and how can I fix it? 为什么会这样,我该如何解决?

Because you are outputting an XML file for every single modification. 因为您要为每个修改输出一个XML文件。 If you want to make all modifications all at once, you should not call XMLModifier's output every time. 如果要一次全部进行修改,则不应每次都调用XMLModifier的输出。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM