如何用 DOM 重新定位 XML 中的节点?

How to reposition a node in XML with DOM?

所以我有这个应该放入 xml 电影文件中。

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse("D:\College\Java Eclipse\tema5\Movies\Movies.xml");


  try {
    Element rootElement = doc.createElement("Movie");
    doc.appendChild(rootElement);

    // firstname elements
    Element id = doc.createElement("Id");
    id.appendChild(doc.createTextNode("3"));
    rootElement.appendChild(id);

    // lastname elements
    Element name = doc.createElement("Name");
    name.appendChild(doc.createTextNode("Movie 3"));
    rootElement.appendChild(name);

    // nickname elements
    Element category = doc.createElement("Category");
    category.appendChild(doc.createTextNode("Animation"));
    rootElement.appendChild(category);

    // salary elements
    Element releasedate = doc.createElement("ReleaseDate");
    releasedate.appendChild(doc.createTextNode("10-Jun-2012"));
    rootElement.appendChild(releasedate);


    Element rating = doc.createElement("Rating");
    rating.appendChild(doc.createTextNode("10"));
    rootElement.appendChild(rating);

    // 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("D:\College\Java Eclipse\tema5\Movies\Movies.xml"));

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

    transformer.transform(source, result);



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

  }

问题是,在我的 xml 文件中,我已经有两部电影,当它尝试放入第三部电影时它成功了,但在第四部电影时它就死了。我认为这是因为节点,我想知道如何将最后一个重新定位到文件的末尾,以便我可以放置更多电影。这是第一次插入后的 xml 文档。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Movie>  
<Movie>
    <Id>1</Id>
        <Name>Movie 1</Name>
    <Category>Action</Category>
    <ReleaseDate>22-JUN-2010</ReleaseDate>
    <Rating>9</Rating>
</Movie>
<Movie>
    <Id>2</Id>
    <Name>Movie 2</Name>
    <Category>Comedy</Category>
    <ReleaseDate>2-JUN-2011</ReleaseDate>
    <Rating>8</Rating>
</Movie>

</Movie>
<Movie>
<Id>3</Id>
<Name>Movie 3</Name>
<Category>Animation</Category>
<ReleaseDate>10-Jun-2012</ReleaseDate>
<Rating>10</Rating>
</Movie>
Element docRoot = doc.getDocumentElement();
Element rootElement = doc.createElement("Movie");
docRoot.appendChild(rootElement);

我建议将您的 rootElement 变量重命名为 new Movie,因为它具有误导性。 xml中只能有一个根元素,通过doc.getDocumentElement()

获取