XML文件没有使用jdom进行更新

以下是我的java代码,用于读取xml文件并更新其中的一些值。

public static void writeLexicon(String word, String tag) { int newFreq=0; int tagAvailability = 0; int wordAvaialbility = 0; try { if (new File("./src/Lexicon.xml").exists()) { Document readDoc = getXMLFile(); Element root = readDoc.getRootElement(); for (Element curElem : root.getChildren("lexiconElement")) { if (word.equals(curElem.getChildText("word"))) { // word avaialble List subEle = curElem.getChildren(); for (int i = 1; i < subEle.size(); i++) { if (tag.equals(subEle.get(i).getChildText("tag"))) { int curFreq = Integer.parseInt(subEle.get(i).getChildTextTrim("frequancy")); newFreq = curFreq + 1; subEle.get(i).getChild("frequancy").setText(String.valueOf(newFreq)); tagAvailability = 1; //break; } } if (tagAvailability == 0) { Element newTag = new Element("tag").setText(tag); Element newFrequancy = new Element("frequancy").setText("1"); newTag.addContent(newFrequancy); curElem.addContent(newTag); } wordAvaialbility = 1; } } if (wordAvaialbility == 0) { Element lexiconElement = new Element("lexiconElement"); Element newWord = new Element("word").setText(word); Element newTag = new Element("tag").setText(tag); Element newFrequancy = new Element("frequancy").setText("1"); newTag.addContent(newFrequancy); lexiconElement.addContent(newWord); lexiconElement.addContent(newTag); root.addContent(lexiconElement); XMLOutputter xmlOutput = new XMLOutputter(Format.getPrettyFormat()); xmlOutput.output(readDoc, new FileOutputStream(new File("./src/Lexicon.xml"))); } } else { Document doc = new Document(); // create a JDOM document String freq = "1"; Element theRoot = new Element("Lexicon"); // Creates a element named Lexicon and makes it the root doc.setRootElement(theRoot); Element lexiconElement = new Element("lexiconElement"); Element Word = new Element("word"); Element Tag = new Element("tag"); Element frequency = new Element("frequency"); Word.addContent(new Text(word)); Tag.addContent(new Text(tag)); frequency.addContent(new Text(freq)); Tag.addContent(frequency); lexiconElement.addContent(Word); lexiconElement.addContent(Tag); theRoot.addContent(lexiconElement); XMLOutputter xmlOutput = new XMLOutputter(Format.getPrettyFormat()); xmlOutput.output(doc, new FileOutputStream(new File("./src/Lexicon.xml"))); } } catch (Exception e) { System.out.println(e); } } 

我需要获取frequancy标记中的值并将值递增1并添加到相同的xml文件中。 但它没有使用上面的代码。

以下是我的xml文件中的几个元素。

   හයිටිය  NNPI 1    -2  QFNUM 1    තමා  PRP 1   

这是许多应用程序的一个相对常见的问题,而不仅仅是JDOM。

当您创建FileOutputStream并向其写入时,您必须在退出程序之前冲洗它并关闭它

更改:

 xmlOutput.output(doc, new FileOutputStream(new File("./src/Lexicon.xml"))); 

(使用try-with-resources):

 try (OutputStream fileout = new FileOutputStream(new File("./src/Lexicon.xml"))) { xmlOutput.output(doc, fileout); } 

要么:

 OutputStream fileout = new FileOutputStream(new File("./src/Lexicon.xml")); xmlOutput.output(doc, fileout); fileout.flush(); fileout.close();