JSP:刷新文件的代码

时间:2014-04-03 09:25:56

标签: java xml jsp

目前我正在使用XML,JSP和Activiti Workflow Engine。在我的项目中,我有以下流程:

  • 员工提交JSP表单
  • 提交表单后,我将更新我的xml文件以更改标记的名称。例如,从:“签署文档”到“签署文档1”。 1此处表示我数据库中数据的ID
  • 文件成功更新后,程序将根据我更新的XML文件直接部署Activiti Workflow Engine Process

我已成功更新我的xml文件并部署该过程,但是当我遇到XML标记名称的问题时。问题是:

  • 成功更新XML文件后,我的程序不会直接使用最新文件,而是使用旧文件。因此,例如,在更新XML文件之前,标记的名称是“Sign Form”,在我更新文件后,文件上的标记名称将变为“Sign Form 1”。但是,当我检查我的activiti数据库时,它显示activiti仍然使用标签名为“Sign Form”的xml文件而不是“Sign Form 1”

我想是因为我需要在运行部署之前先刷新XML文件。但我不知道如何在JSP或Java上这样做。有人可以帮帮我吗?感谢

这是我的代码:

try {
            String filepath = "path/to/the/filename.bpmn20.xml";
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(filepath);

            // Get the process element by tag name directly
            Node userTask = doc.getElementsByTagName("userTask").item(0);

            // update userTask attribute
            NamedNodeMap attr = userTask.getAttributes();
            Node nodeAttr = attr.getNamedItem("name");
            nodeAttr.setTextContent("Review and Sign Form "+id);

            // write the content into xml file
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(filepath));
            transformer.transform(source, result);

            System.out.println("Done");

           } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
           } catch (TransformerException tfe) {
            tfe.printStackTrace();
           } catch (IOException ioe) {
            ioe.printStackTrace();
           } catch (SAXException sae) {
            sae.printStackTrace();
           }

1 个答案:

答案 0 :(得分:0)

您可以只读取文件,替换XML内容字符串并将修改后的内容写回XML。

参考:Find and replace words/lines in a file