2017-05-07 82 views
0

我正在开发一个学校项目的游戏,我想将游戏的状态保存在XML文件中。Java DOM xml版本问题

目前我能够读取信息的XML文件中,但我不能更新它,我不知道为什么...

这里是XML:

<story> 
    <level id="1"> 
    <text>Some info about the level...</text> 
    <finished>false</finished> 
    <nbsteps>0</nbsteps> 
    </level> 
</story> 

我想编辑<finished>false</finished><finished>true</finished>当玩家完成这个级别。

在我写的代码编辑这一点,但它实际上并不编辑XML的那一刻...

public void updateSave(){ 
    try { 

     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(this.xmlSave); 

     Element racine = doc.getDocumentElement(); 
     NodeList levelList = doc.getElementsByTagName("level"); 
     Element niveau = (Element) levelList.item(this.levelId); 
     niveau.getElementsByTagName("finished").item(0).setTextContent("true"); 


     } 
     catch (ParserConfigurationException | SAXException | IOException | DOMException e) {} 
    } 

谢谢你的解释,并有一个愉快的一天!

+2

您的代码** **做编辑XML,但并没有将其保存到该磁盘,你将不得不保存它 – glee8e

+0

看看这个:[http://stackoverflow.com/questions/4561734/how-to-save-parsed-and-changed-dom-document-in-xml-file ](http://stackoverflow.com/questions/4561734/how-to-save-parsed-and-changed-dom-document-in-xml-file)。 –

+0

谢谢,它现在可行! –

回答

0

好感谢我只是忘了保存^^”

我的最终代码,效果很好是

public void updateSave() throws TransformerConfigurationException, TransformerException{ 
    try { 

     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(this.xmlSave); 

     Element racine = doc.getDocumentElement(); 
     NodeList levelList = doc.getElementsByTagName("level"); 
     Element niveau = (Element) levelList.item(this.node.id); 
     niveau.getElementsByTagName("finished").item(0).setTextContent("true"); 

     Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
     Result output = new StreamResult(this.xmlSave); 

     Source input = new DOMSource(doc); 
     transformer.transform(input, output); 
     } 
     catch (ParserConfigurationException | SAXException | IOException | DOMException e) {} 
    }