【问题标题】:JSP: Code to Refresh FileJSP:刷新文件的代码
【发布时间】:2014-04-03 09:25:55
【问题描述】:

目前我正在使用 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”而不是“Sign Form 1”的 xml 文件

我猜是因为我需要在运行部署之前先刷新 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();
           }

【问题讨论】:

  • 如何提交修改的?
  • 你能发布你如何更新数据库中的xml的代码吗?
  • 我认为这不是我的 xml 文件的问题。但是,在我的 java 代码上:这是我的 java 代码: ch.changeBO(id+1); dp.deployProcess(); ch.changeBO(id+1) 用于更改 XML 文件,dp.deployProcess() 用于部署流程(将使用我的 xml 文件)我认为问题是我尝试使用我的xml文件没有刷新它们,所以编译器没有注意到变化。

标签: java xml jsp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多