2017-05-07 80 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) {} 
    }