JDOM setText()不起作用

时间:2015-10-01 14:43:01

标签: java regex jdom-2

我有一个解析特定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"));

它永远不会奏效。有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

我看到了问题。您正在更新a.getChild("LINE")元素,但是将文档写入文件。

如何解决这个问题?

更新document对象子代码,例如document.getChild("LINE")(或)将元素写入文件,如newDoc.output(a,......)