如何使用DOM在XML中重新定位节点



所以我有了这个,应该把一个电影放在一个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变量重命名为newMovie,因为它是错误的。xml中只能有一个根元素,并且可以通过doc.getDocumentElement()

获取

最新更新