【问题标题】:JDOM setText() Not WorkingJDOM setText()不工作
【发布时间】: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() 的参数中,你能用你解释的内容创建一个答案吗:)

标签: java regex jdom-2


【解决方案1】:

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

如何解决?

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

【讨论】:

  • 我不想问,但你能根据我的代码告诉我为 findVirtue(String, Element) 的第二个参数提供什么吗?代码没有将所有信息写入我创建的新 xml 文档...
  • 我不能确切地说,但我猜你这里有多余的代码。 1)调用 findVirtue(...) 的人从 XML 传递一个元素,您需要对其进行操作。如果不是这样,那么2)第二个参数没用,只需要对文档进行移除操作即可,而不是a.getchild...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多