【发布时间】:2015-10-01 14:43:01
【问题描述】:
我有一个解析特定字符串的方法,并且应该使用 JDOM 的 setText() 方法更改该字符串。但是当我在程序完成后查看文档时,字符串永远不会改变:
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"));
它永远不会起作用。有人可以告诉我我做错了什么吗?
【问题讨论】:
-
我做到了..这并没有什么不同..
-
我看到了问题。您正在更新 A.get.... 元素,但将“文档”写入文件。而不是在“文档”上更新调用 getChild 并将文档写入文件。
-
@Nambari,哦,我很高兴你发现了?你能提供一个关于我应该做什么的答案吗?对不起,我还在学习如何使用 JDOM 的方法……
-
更新“文档”子节点,例如 document.getChild.... (或)将元素写入文件,例如 newDoc.output(a,......)
-
@Nambari,谢谢你。我完全忽略了将变量 a 添加到 output() 的参数中,你能用你解释的内容创建一个答案吗:)