java - 追加到 XML 文件

标签 java xml dom append

我正在将一些数据写入 XML 文件。

代码如下:

    try {

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

    // root elements
    Document doc = docBuilder.newDocument();
    Element rootElement = doc.createElement("company");
    doc.appendChild(rootElement);

    // staff elements
    Element staff = doc.createElement("Staff");
    rootElement.appendChild(staff);

    // set attribute to staff element
    Attr attr = doc.createAttribute("id");
    attr.setValue("1");
    staff.setAttributeNode(attr);

    // shorten way
    // staff.setAttribute("id", "1");

    // firstname elements
    Element firstname = doc.createElement("firstname");
    firstname.appendChild(doc.createTextNode("yong"));
    staff.appendChild(firstname);

    // lastname elements
    Element lastname = doc.createElement("lastname");
    lastname.appendChild(doc.createTextNode("mook kim"));
    staff.appendChild(lastname);

    // nickname elements
    Element nickname = doc.createElement("nickname");
    nickname.appendChild(doc.createTextNode("mkyong"));
    staff.appendChild(nickname);

    // salary elements
    Element salary = doc.createElement("salary");
    salary.appendChild(doc.createTextNode("100000"));
    staff.appendChild(salary);

    // write the content into xml file
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("file.xml"));

    // Output to console for testing
    // StreamResult result = new StreamResult(System.out);

    transformer.transform(source, result);

    System.out.println("File saved!");

  } catch (ParserConfigurationException pce) {
    pce.printStackTrace();
  } catch (TransformerException tfe) {
    tfe.printStackTrace();
  }
}

此代码将 XML 数据写入“file.xml”。如果我已经有一个“file.xml”文件,那么将 XML 数据 append 到该文件的最佳方法是什么?我需要重写上面的整个代码,还是很容易调整代码?

最佳答案

是的——您正在处理 DOM,因此您必须将整个文件保存在内存中。替代方案是 StAX。

关于java - 追加到 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625276/

相关文章:

java - 使用instanceof检查数组元素是否属于某个类

java - 避免子集合元素关联的n+1 eager fetching

python - 如何使用带有 python 的正则表达式从 XML 文件中删除多个空格和字符?

javascript - not() 和下拉列表的 jquery 问题

javascript - 仅在 IE 上,表单 DOM id 返回 "is null or not an object"问题

jquery - 无论如何在 jQuery 中的背景图像之间淡入淡出?

java - JAVA 中的 SVM、KNN 和 Naive Byes 等文本分类器的库?

java - 将视频上传至 twitvid 并获取链接

java - 如何通过 Java 代码提取 JBoss 中的用户名、密码和数据库或连接 url?

java - Android 4.4.2 渲染问题