XML file is not updating using the jdom



following is my java code for reading a xml file and updating some values in it.



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<Element> 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);
}
}


i need to get the value in frequancy tag and increment the value by one and add to same xml file. but it didnt work with the above code.


No comments:

Post a Comment