以下是我的 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<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);
}
}
我需要获取频率标签中的值并将该值加一并添加到相同的 xml 文件中。但它不适用于上面的代码。
以下是我的 xml 文件中可用的一些元素。
<lexiconElement>
<word>හයිටිය</word>
<tag>
NNPI
<frequency>1</frequency>
</tag>
</lexiconElement>
<lexiconElement>
<word>-2</word>
<tag>
QFNUM
<frequancy>1</frequancy>
</tag>
</lexiconElement>
<lexiconElement>
<word>තමා</word>
<tag>
PRP
<frequancy>1</frequancy>
</tag>
</lexiconElement>
这是许多应用程序中相对常见的问题,而不仅仅是 JDOM。
当您创建 FileOutputStream 并向其写入时,您必须冲洗并关闭它在退出程序之前。
Change:
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);
}
or:
OutputStream fileout = new FileOutputStream(new File("./src/Lexicon.xml"));
xmlOutput.output(doc, fileout);
fileout.flush();
fileout.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)