我有一个解析特定String的方法,并且应该使用JDOM的setText()方法更改该String。但是当我在程序完成后查看文档时,String永远不会改变:
public void findVirtue(String word, Element a) throws JDOMException,
IOException, TransformerFactoryConfigurationError,
TransformerException {
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(xml);
Pattern p = Pattern.compile("(?i)\\bvirtue('?s)?\\b",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(word);
List<String> virtue = new ArrayList<String>();
// Need to Increment a counter
while (m.find()) {
virtue.add(m.group());
log("FOUND : " + m.group());
log("REPLACEMENT : " + m.replaceAll("Ryan"));
a.getChild("LINE").setText(m.replaceAll("Ryan"));
XMLOutputter newDoc = new XMLOutputter();
newDoc.setFormat(Format.getPrettyFormat());
newDoc.output(document, new FileWriter(
"C:\\Users\\Ryan\\workspace\\Tragic\\result" + xml.getName()));
//counter();
}
}
现在我知道这不是正则表达式的问题,因为我能够将输出记录到另一个文件。但是当我使用:
a.getChild("LINE").setText(m.replaceAll("Ryan"));
它永远不会奏效。有人可以告诉我我做错了吗?
答案 0 :(得分:2)
我看到了问题。您正在更新a.getChild("LINE")
元素,但是将文档写入文件。
如何解决这个问题?
更新document
对象子代码,例如document.getChild("LINE")
(或)将元素写入文件,如newDoc.output(a,......)